1. 软件简介

DS-PAW是Device Studio平台下一款第一性原理密度泛函计算程序，使用平面波作为基函数组，使用投影缀加平面波方法构造赝势。本程序能广泛应用于材料科学领域，开展例如金属、半导体、绝缘体、表面、磁性、非磁性、锂电等材料的计算研究；能够精确预测材料的电子分布；能够进行原子几何结构优化等多种功能的计算。本程序性能稳定，在intel芯片及国产海光芯片下经过百万案例的内部测试，包括各项功能及并行效率。

1.1. install安装说明

备注

DS-PAW 使用cmake编译，要求cmake版本≥2.8

建议使用Intel编译器编译

1.1.1. Intel 编译器编译MKL版本(推荐使用)

1cd DS-PAW
2mkdir build
3cd build
4
5cmake .. -DCMAKE_CXX_COMPILER=icc -DCMAKE_INSTALL_PREFIX=install_path/ -DDSPAW_USE_MKL=ON
6
7make -jN #N为编译使用的核数
8make install

备注

Intel 编译器版本要≥2017

CMAKE_CXX_COMPILER 用于指定c++编译器位置，CMAKE_INSTALL_PREFIX 用于指定DS-PAW的安装目录

若未成功查找到MPI编译器，可设置 -DMPI_CXX_COMPILER=mpiicc 来指定Intel MPI编译器位置

1.1.2. Gcc 编译器编译openblas版本

1cd DS-PAW
2mkdir build
3cd build
4
5cmake .. -DCMAKE_CXX_COMPILER=icc -DCMAKE_INSTALL_PREFIX=install_path/ -DOPENBLAS_PATH=openblas_path/
6
7make -jN #N为编译使用的核数
8make install

备注

gcc 编译器版本要≥4.8

系统中需存在MPI编译器，如openmpi、mpich等

CMAKE_CXX_COMPILER 用于指定c++编译器位置，CMAKE_INSTALL_PREFIX 用于指定DS-PAW的安装目录，OPENBLAS_PATH 用于指定openblas目录、访问 openblas文档 [https://github.com/xianyi/OpenBLAS/wiki/Installation-Guide]

若未成功查找到MPI编译器，可设置 -DMPI_CXX_COMPILER=mpicxx 来指定MPI编译器位置

1.2. command命令说明

1.2.1. list命令列表

lic

info

mpi

mpiargs

pob

1.2.2. detail命令详细描述

命令名称: -lic

使用方法： -lic 用于生成序列号，在DS-PAW安装目录下执行命令：DS-PAW -lic 即可得到LicenseNumber.txt文件，该文件用于license的申请

命令名称: -info

使用方法： -info 用于查看软件版权信息，执行命令：DS-PAW -info

命令名称: -mpi xxx

使用方法： -mpi 用于指定mpi执行程序的位置，如： -mpi mpirun

命令名称: -mpiargs xxx

使用方法： -mpiargs 用于指定mpi运行参数，如：-mpiargs "-np 16"

命令名称: -pob

使用方法： -pob 用于并行计算时合理分配核数加快运行速度，为 parallel over band 的简写，可在提交命令中添加此关键词

1.3. run程序运行

1.3.1. submit命令提交运行

设置环境变量：

export PATH={DS-PAW INSTALLPATH}/bin:$PATH

串行执行：

DS-PAW input.in

并行执行：

DS-PAW -mpi mpirun -mpiargs "-np 16" input.in -pob

1.3.2. script脚本提交运行

若使用排队系统（例如PBS、slurm等）提交任务，只要配置完成相应的 .pbs 或 .slurm 脚本，之后使用 qsub xx.pbs 或 sbatch xx.slurm 提交任务即可。

2. 快速入门

本章将介绍DS-PAW的各种功能的基本使用，具体包括： 结构弛豫计算 、 自洽计算 、 能带（投影能带）计算 、 态密度（投影态密度）计算 、 自洽中直接计算能带和态密度 、势函数计算 、 电子局域密度计算 、部分电荷密度计算 、 杂化泛函计算 、 范德瓦尔斯修正计算 、 偶极修正计算 、 DFT+U计算 、 背景电荷计算 、 光学性质计算 、 频率计算 、 弹性常数计算 、 过渡态计算 、 声子谱计算 、 自旋轨道耦合计算 、 分子动力学模拟 、外加电场计算 、铁电计算 、bader电荷计算 、能带反折叠计算 、 介电常数计算 、 压电张量计算 、固定基矢弛豫计算 、声子热力学性质计算 、solid state neb计算；在DS-PAW软件中大致的可以将参数分类几类：与物理结构相关的参数、与计算性质相关的参数、与计算精度相关的参数、与收敛相关的参数，这些参数中有很多都是有默认值的，且绝大多数参数不会影响计算结果；因此本章只设置了一些特别重要的参数，同时将对这些参数进行简单的讲解。

2.1. relax结构弛豫

在密度泛函理论（DFT）中结构弛豫指的改变初始的结构的晶胞及原子位置从而优化得到总能量的局域最小值。通过结构弛豫计算，可以减少在每个原子上的受力，从而得到较为稳定的结构（一定程度上，可以通过计算声子谱或者频率来验证结构的稳定性）。使用建模软件搭建的结构一般情况下原子受力都会比较大，且即使是其他DFT软件优化过的结构，在另外一个DFT计算软件中原子受力也不一定是最小的，因此一般情况下在计算某个结构的具体性质之前需要进行结构弛豫计算。

2.1.1. \(Si\) 原子结构弛豫输入文件

输入文件包含参数文件 relax.in 和结构文件 structure.as ， relax.in 如下：

# task type
task = relax
#system related
sys.structure = structure.as
sys.symmetry = false
sys.functional = LDA
sys.spin = none
#scf related
cal.methods = 2
cal.smearing = 1
cal.ksamping = G
cal.kpoints = [10, 10, 10]
cal.cutoffFactor = 1.5

#relax related
relax.max =  60
relax.freedom = atom
relax.convergence =  0.05
relax.methods = CG

io.outStep = 1
io.wave = false
io.charge = false

relax.in 文件大致可以分为4部分参数：

第一部分指定计算类型，计算类型中只有task一个参数：

task ：设置计算类型，本次计算为relax结构弛豫；

第二部分指定系统相关参数，系统相关参数以sys.开头，一般是一些与体系的结构、泛函、磁性、对称性相关的参数：

sys.structure ：指定体系的结构文件，DS-PAW支持 .as 和 .json 的结构文件格式， .as 文件可以直接使用Device Studio软件生成，也可以自己手动生成；

sys.symmetry ：设置DS-PAW计算时是否需要使用对称性；

sys.functional ：设置泛函，目前程序支持 LDA 及 PBE 泛函；

sys.spin ：设置体系的磁性，由于 Si 没有磁性，因此将sys.spin设置为 none ；

第三部分指定计算相关的参数，这类参数以cal.开头：

cal.methods： 设置自洽电子步优化方法，2表示使用 Residual minimization 方法；

cal.smearing ：设置每个波函数的部分占有数方法，1表示使用 Gaussian smearing 方法；

cal.ksamping ：自动生成布里渊区 k点 网格方法，G表示使用 Gamma centered 方法；

cal.kpoints ： 设置布里渊区 k点 网格取样大小，一般K点的大小需要根据体系晶格的大小和体系的周期性来设置，通常建议在具有周期性的方向上晶格矢量与K点的乘积不小于40，在不具有周期性的方向上将 K点 设置为1即可；

第四部分指定结构弛豫相关参数，例如结构弛豫的方法、结构弛豫的类型、结构弛豫的精度等相关参数，结构弛豫指的是优化原子位置得到总能量的局域最小值的结构，一般也称之为离子步优化；

relax.max：设置结构驰豫时，最大的离子步步数；

relax.freedom ：设置结构驰豫的自由度，atom表示只弛豫原子；all表示弛豫晶格常数和原子；volume表示只弛豫晶格；

relax.convergence ：设置结构驰豫时，原子受力的收敛判据；

relax.methods ：设置结构驰豫的方法，CG表示共轭梯度法；

structure.as 文件参考如下：

Total number of atoms
2
Lattice
0.00 2.75 2.75
2.75 0.00 2.75
2.75 2.75 0.00
Direct
Si -0.115000000 -0.125000000 -0.125000000
Si 0.125000000 0.125000000 0.125000000

structure.as 文件结构固定，必须严格对照每一行写入相应信息:

第一行为固定提示行

第二行为总的原子个数

第三行为固定提示行

第四至六行为晶胞信息

第七行为原子坐标的形式，可选值为 Direct 和 Cartesian （全拼且首字母必须为大写）

第八行开始写入原子坐标信息，每一行的开头必须标注坐标所描述的原子的名称

由于本案例为结构弛豫计算，因此手动的将第一个 Si原子 的X坐标从 -0.125 改为 -0.115 ，这样能够更好的体现结构弛豫的效果。

备注

如果想要固定原子，则在第7行加入Fix_x Fix_y Fix_z标签，然后在每个原子对应的位置加入F或T，F表示不固定，T表示固定。

Direct Fix_x Fix_y Fix_z
Si -0.115000000 -0.125000000 -0.125000000 F F F
Si 0.125000000 0.125000000 0.125000000 T T T

2.1.2. run程序运行

准备好输入文件之后，将 relax.in 和 structure.as 文件上传到安装了DS-PAW的环境上，这里将以linux环境为例子进行介绍；

在无图形界面的linux环境下运行软件的方式与在windows的环境下运行程序会有很大的区别，在linux下需要通过命令行的方式来运行程序；一般情况下需要先加载一下环境变量，通常会将需要用的环境变量写入文本或者 .bashrc ，通过 source 的命令来加载环境；环境加载完成之后，运行 DS-PAW relax.in ，此时使用单机版的DS-PAW进行计算；如需并行计算则需运行 DS-PAW -mpi mpirun -mpiargs "-n 2" relax.in ，-mpi 指定mpirun的名称， -mpiargs 指定mpirun后面的参数，用双引号括起来。如果你需要使用排队系统（例如PBS、slurm等）提交任务，只要配置完成相应的 .pbs 或 .slurm 脚本，之后使用 qsub xx.pbs 或 sbatch xx.slurm 提交任务即可。

2.1.3. analysis计算结果分析

根据上述的输入文件，计算完成之后将会得到 DS-PAW.log 、 relax.json 、 system.json 、 paw_tmp/relax.tmp 这4个文件:

DS-PAW.log ：DS-PAW计算之后得到的日志文件；

relax.json ：结构弛豫完成之后的结构文件，里面保存着每一个离子步完成之后的结构文件，可以将 relax.json 文件导入Device Studio软件中进行显示；生成的 relax.json 文件也可以直接用于之后自洽计算、能带、态密度等一系列计算中，只需在计算中将 sys.structure参数 指定当前 relax.json 文件即可；

system.json： system.json 文件中保存着最后一个离子步之后的计算结果，包含结构、磁矩、能量本征值、占据态、K点信息、原子受力、stress等相应的信息；

将 relax.json 拖入Device Studio查看结构如下所示：

除查看最终构型，DS可以以gif动画的形式展示弛豫过程中结构变化的过程，在面板依次选择 Simulator-->DS-PAW-->Analysis Plot-->relax.json-->Trajectory 即可，以下为截取其中一帧的图像：

使用文本编辑器或者在线显示 json格式 可打开 realx.json 文件，更简单的方法是查看paw_tmp文件夹下的 relax.tmp 文件，可得弛豫结束后的结构数据如下：

Total number of atoms
Lattice
           0         2.75         2.75
        2.75            0         2.75
        2.75         2.75            0
Direct
Si   0.88019174   0.87481749   0.87481752
Si   0.12980826   0.12518251   0.12518248

本次结构弛豫计算进行了3个离子步的计算，弛豫结束的构型中，手动移动的第一个Si原子在x方向上的坐标在弛豫计算之后完成校正。

备注

单机版DS-PAW运行命令为软件名+输入文件名，如果你的输入文件名为abc.in那么只要执行DS-PAW abc.in即可。

该弛豫计算的收敛判据选取为原子受力，若以能量作为收敛判据，可参考 relax.convergence = 1.0e-4进行设置。

2.2. scf自洽计算

自洽计算能够得到特定晶体的电荷密度和波函数，有了电荷密度之后才能有计算该体系的能带、态密度等电子结构性质。特别需要注意是：自洽与能带、态密度等电子结构性质计算是有先后顺序的，必须先进行自洽计算得到电荷密度才能进一步计算能带、态密度等电子结构性质。

2.2.1. \(Si\) 原子自洽计算之准备输入文件

输入文件包含参数文件 scf.in 和结构文件 structure.as ， scf.in 如下：

# task type
task = scf
#system related
sys.structure = structure.as
sys.symmetry = false
sys.functional = LDA
sys.spin = none
#scf related
cal.methods = 2
cal.smearing = 1
cal.ksamping = G
cal.kpoints = [10, 10, 10]
cal.cutoffFactor = 1.5
#outputs
io.charge = true
io.wave = true

scf.in 输入参数介绍：

可以看到 scf.in 的输入文件中很多参数与结构弛豫的参数名是一致的，其设置方法也是一致的，这里只着重介绍一些前面没设置过或设置有些不同的参数：

task ：本次计算为 scf 自洽计算，因此将task设置为 scf ；

cal.cutoffFactor ：表示截断能参数 cal.cutoff 的系数，在DS-PAW程序中，如果 cal.cutoff 参数缺失，程序将根据元素的截断能设置默认的平面波截断， cal.cutoffFactor 参数就是在 cal.cutoff 上设置乘以一个系数；

io.charge ：当io.charge设置为 true 时，表示计算完成之后输出电荷密度的二进制文件rho.bin和json文件rho.json，二进制rho.bin文件用于后续的后处理计算，例如能带、态密度等，rho.json文件用于显示；

io.wave ：当io.wave设置为 true 时，表示计算完成之后输出波函数的二进制文件wave.bin，用户可以在后续的后处理计算中选择是否使用wave.bin开始计算；

structure.as 文件参考如下：

Total number of atoms
2
Lattice
0.00 2.75 2.75
2.75 0.00 2.75
2.75 2.75 0.00
Direct
Si -0.125000000 -0.125000000 -0.125000000
Si 0.125000000 0.125000000 0.125000000

由于本案例为自洽计算只是为了计算得到特定体系的电子结构，因此不需要手动改变原子位置；

备注

io类参数只在结构弛豫和自洽中起作用，例如io.charge在其他计算情况下将不会生成rho.bin或rho.json文件；

在结构弛豫和自洽中，还能够保存elf、potential的数据，只需要将io.elf和io.potential设置为true即可；

如果用户想要使用自己优化的结构，只需在计算中将sys.structure参数指定绝对路径或相对路径下的relax.json，也可以将relax.json文件复制到本次计算的目录中，设置sys.structure=./relax.json即可；

带自旋体系的计算案例详解第二章的NiO案例。

计算时如需给体系添加背景电荷，可直接设置sys.electron参数，该参数指定价电子的总数。

2.2.2. run程序运行

准备好输入文件 scf.in 和 structure.as 后，将文件上传到服务器上运行，按照结构弛豫中介绍的方法执行 DS-PAW scf.in 。

2.2.3. analysis计算结果分析

根据上述的输入文件，计算完成之后将会得到 DS-PAW.log 、 system.json 、 rho.bin 、 rho.json 、 wave.bin 这5个文件。

rho.bin ：电荷密度的二进制文件，用于后续的后处理计算；

rho.json ：电荷密度的 json 格式文件，用来显示电荷密度的结果；

wave.bin ：波函数的二进制文件，用于后续计算；

使用 Device Studio 可直接对 rho.json 文件处理出图，其操作步骤为：Simulator-->DS-PAW-->Analysis Plot，选择 rho.json 即可，可根据作图要求自定义设置面板参数，处理可得一维、二维、三维电荷密度图，其中三维图如下所示：

另可使用python脚本将 rho.json 格式的转化成 VESTA 软件支持的格式，具体操作见 辅助工具使用教程 部分。

2.3. band能带计算

本节将从自洽出发介绍如何使用DS-PAW计算能带和投影能带。以Si体系为例进行自洽计算（见2.2节 ），自洽完成之后准备能带计算和投影能带计算，并对能带和投影能带作图分别进行分析。

2.3.1. \(Si\) 能带计算输入文件

输入文件包含参数文件 band.in 、结构文件 structure.as 和上次自洽计算得到的二进制电荷密度文件 rho.bin ， band.in 如下：

# task type
task = band
#system related
sys.structure = structure.as
sys.symmetry = false
sys.functional = LDA
sys.spin = none
#scf related
cal.iniCharge = ./rho.bin
cal.methods = 2
cal.smearing = 1
cal.ksamping = G
cal.kpoints = [10, 10, 10]
cal.cutoffFactor = 1.5
#band related
band.kpointsLabel= [G,X,W,K,G,L]
band.kpointsCoord= [0, 0, 0, 0.5, 0, 0.5, 0.5, 0.25, 0.75, 0.375, 0.375, 0.75, 0, 0, 0, 0.5, 0.5, 0.5]
band.kpointsNumber= [30, 30, 30, 30, 30]

band.in 输入参数介绍：

在能带计算中可以尽量保留 sys. 和 cal. 的参数到 band.in 中，之后设置能带计算特有的参数即可：

task ：本次计算为band能带计算，设置task为 band ；

cal.iniCharge ：表示读取电荷密度二进制文件，支持绝对路径及相对路径，这里./表示当前路径下的 rho.bin 文件；

能带计算中新增了一部分能带相关的参数，这些参数只在能带计算中起作用：

band.kpointsLabel ：表示能带计算时高对称点标签，一个 band.kpointsCoord 对应一个 band.kpointsLabel ；

band.kpointsCoord ：表示能带计算时高对此点的分数坐标，每三个数为一组；

band.kpointsNumber ：表示每相邻两个高对称点的间隔；

structure.as 文件同自洽计算。（见2.2节）

备注

若读取电荷密度文件rho.bin，cal.cutoffFactor和cal.cutoff须和之前自洽计算的设置保持一致，否则会出现格点数据不匹配的问题

band.kpointsCoord、band.kpointsLabel和band.kpointsNumber三个参数的维度需要统一

2.3.2. run程序运行

准备好输入文件 band.in 和 structure.as 以及 rho.bin 之后，将文件上传到服务器上运行，按照结构弛豫中介绍的方法执行 DS-PAW band.in 。

2.3.3. analysis计算结果分析

根据上述的输入文件，计算完成之后将会得到 DS-PAW.log 、 band.json 这2个文件。

band.json ：能带计算完成之后的 json 数据文件；此时能带的数据也将会被保存在 band.json 中，具体的数据结构详见数据结构解析部分；

使用 Device Studio 可直接对 band.json 文件处理出图，其操作步骤为：Simulator-->DS-PAW-->Analysis Plot，选择 band.json 即可，可根据作图要求自定义设置面板参数，DS处理得到的能带图如下所示：

另可使用 python 进行数据处理，具体操作见 辅助工具使用教程 部分。

2.3.4. ioband自洽中直接计算能带

在2.2自洽计算的输入文件中加入io.band=true，之后将band相关参数写入 scf.in 中即可。输入文件如下：

# task type
task = scf
#system related
sys.structure = structure.as
sys.symmetry = false
sys.functional = LDA
sys.spin = none
#scf related
cal.methods = 2
cal.smearing = 1
cal.ksamping = G
cal.kpoints = [10, 10, 10]
cal.cutoffFactor = 1.5
#outputs
io.charge = true
io.wave = true
#band related
io.band=true
band.kpointsLabel= [G,X,W,K,G,L]
band.kpointsCoord= [0, 0, 0, 0.5, 0, 0.5, 0.5, 0.25, 0.75, 0.375, 0.375, 0.75, 0, 0, 0, 0.5, 0.5, 0.5]
band.kpointsNumber= [30, 30, 30, 30, 30]

此时计算出来的能带图与单独计算得到的能带图效果一致。

备注

只有在task=scf时io.band=true才能生效;

当io.band=true生效时，band相关的参数都将生效;

当io.band生效时，不再需要设置cal.iniCharge = ./rho.bin，此过程将在程序内部完成。

ioband.in文件中需给出两类k点，cal.kpoints给出自洽计算的k点，band.kpoints相关参数给出能带计算的k点，两部分k点缺一不可。

2.4. pband投影能带计算

投影能带是指在能带计算过程中将每条能带每个K点上的能量展开为每个原子及其轨道的贡献。

2.4.1. \(Si\) 投影能带计算输入文件

投影能带的输入文件包含参数文件 pw_band.in 结构文件 structure.as 和上次自洽计算得到的二进制电荷密度文件 rho.bin ， pw_band.in 如下：

# task type
task = band
#system related
sys.structure = structure.as
sys.symmetry = false
sys.functional = LDA
sys.spin = none
#scf related
cal.iniCharge = ./rho.bin
cal.methods = 2
cal.smearing = 1
cal.ksamping = G
cal.kpoints = [10, 10, 10]
cal.cutoffFactor = 1.5
#band related
band.kpointsLabel= [G,X,W,K,G,L]
band.kpointsCoord= [0, 0, 0, 0.5, 0, 0.5, 0.5, 0.25, 0.75, 0.375, 0.375, 0.75, 0, 0, 0, 0.5, 0.5, 0.5]
band.kpointsNumber= [30, 30, 30, 30, 30]
band.project=true

pw_band.in 输入参数介绍：

pw_band.in : 与普通能带的区别在于在计算参数中设置了 band.project 参数:

band.project ：表示在能带计算中打开能带投影的开关；

2.4.2. run程序运行

准备好输入文件 pw_band.in 和 structure.as 以及 rho.bin 之后，将文件上传到服务器上运行，按照结构弛豫中介绍的方法执行 DS-PAW pw_band.in 。

2.4.3. analysis计算结果分析

根据上述的输入文件，计算完成之后将会得到 DS-PAW.log 、 band.json 这2个文件。

band.json ：能带计算完成之后的 json 数据文件；此时投影能带的数据也将会被保存在 band.json 中，具体的数据结构详见数据结构解析部分；

使用 Device Studio 可直接对 band.json 文件处理出图，其操作步骤为：Simulator-->DS-PAW-->Analysis Plot，选择 band.json 即可，可根据作图要求自定义设置面板参数。DS处理得到的能带图如下所示：

另可使用 python 进行数据处理，具体操作见 辅助工具使用教程 部分。

2.5. dos态密度计算

本节将从自洽出发介绍如何使用DS-PAW计算态密度计算和投影态密度。以Si体系为例进行自洽计算（见2.2节），自洽完成之后准备态密度计算和投影态密度能带计算，并对能带和投影能带作图分别进行分析。

2.5.1. \(Si\) 态密度计算输入文件

输入文件包含参数文件 dos.in 结构文件 structure.as 和上次自洽计算得到的二进制电荷密度文件 rho.bin ， dos.in 如下：

# task type
task = dos
#system related
sys.structure = structure.as
sys.symmetry = false
sys.functional = LDA
sys.spin = none

#scf related
cal.iniCharge = ./rho.bin
cal.methods = 2
cal.smearing = 4
cal.ksamping = G
cal.kpoints = [20, 20, 20]
cal.cutoffFactor = 1.5
cal.sigma = 0.05

#dos related
dos.range=[-10, 10]
dos.resolution=0.05
dos.EfShift = true

dos.in 输入参数介绍：

在态密度计算中可以尽量保留 sys. 和 cal. 的参数到 dos.in 中，之后设置态密度计算特有的参数即可：

task ：本次计算为dos态密度计算，设置task为 dos ；

cal.iniCharge ：表示读取电荷密度二进制文件，支持绝对路径及相对路径，这里./表示当前路径下的 rho.bin 文件；

cal.kpoints ：为得到较为精确的态密度计算结果，需要设置更为密的 K 网格，因此需要重新设置 cal.kpoints ，一般该参数的取值为自洽时的两倍左右；

cal.sigma ：在态密度计算中为了得到比较精细的态密度，往往需要将 sigma 的值设置为尽可能的小；

态密度计算中新增了一部分态密度相关的参数，这些参数只在态密度计算中起作用：

dos.range ：态密度计算时能量的区间；

dos.resolution ：表示态密度计算能量间隔精度，态密度计算的点数即为 dos.range 的差值与 dos.resolution 的比值+1；

dos.EfShift ：当dos.EfShift为 true 时，表示将 dos.range 中设置的能量是相对于自洽费米能级的相对能量；

structure.as 文件同自洽计算。（见2.2节）

备注

需要设置cal.iniCharge参数的时候，cal.cutoffFactor和cal.cutoff参数必须和之前自洽计算的结果一致，不然读取rho.bin的时候会出现格点数据不匹配的问题。

2.5.2. run程序运行

准备好输入文件 dos.in 和 structure.as 以及 rho.bin 之后，将文件上传到服务器上运行，按照结构弛豫中介绍的方法执行 DS-PAW dos.in 。

2.5.3. analysis计算结果分析

根据上述的输入文件，计算完成之后将会得到 DS-PAW.log 、 dos.json 这2个文件。

dos.json ：态密度计算完成之后的json数据文件；

使用 Device Studio 可直接对 dos.json 文件处理出图，其操作步骤为：Simulator-->DS-PAW-->Analysis Plot，选择 dos.json 即可，可根据作图要求自定义设置面板参数。DS处理得到的态密度图如下所示：

另可使用 python 进行数据处理，具体操作见 辅助工具使用教程 部分。

2.5.4. iodos自洽中直接计算态密度

在2.2自洽计算的输入文件中加入io.dos=true，之后将dos相关参数写入 scf.in 中即可。输入文件如下：

# task type
task = scf
#system related
sys.structure = structure.as
sys.symmetry = false
sys.functional = LDA
sys.spin = none
#scf related
cal.methods = 2
cal.smearing = 1
cal.ksamping = G
cal.kpoints = [10, 10, 10]
cal.cutoffFactor = 1.5
#outputs
io.charge = true
io.wave = true
#dos related
io.dos=true
dos.range=[-10, 10]
dos.resolution=0.05
dos.EfShift = true

备注

只有在task=scf时io.dos=true才能生效;

当io.dos=true生效时，dos相关的参数都将生效;

当io.dos生效时，不再需要设置cal.iniCharge = ./rho.bin，此过程将在程序内部完成。

iodos.in文件中cal.kpoints提供自洽计算和态密度计算的k点，两个过程的k点的大小需保持一致。

2.6. pdos投影态密度计算

投影态密度的计算是指在态密度计算过程中将态每个能量下的态密度展开为每个原子及其轨道的态密度贡献。

2.6.1. \(Si\) 投影态密度计算输入文件

投影态密度的输入文件包含参数文件 pdos.in 结构文件 structure.as 和上次自洽计算得到的二进制电荷密度文件 rho.bin ， pdos.in 如下：

# task type
task = dos
#system related
sys.structure = structure.as
sys.symmetry = false
sys.functional = LDA
sys.spin = none
#scf related
cal.iniCharge = ./rho.bin
cal.methods = 2
cal.smearing = 4
cal.ksamping = G
cal.kpoints = [20, 20, 20]
cal.cutoffFactor = 1.5
cal.sigma = 0.05
#dos related
dos.range=[-10, 10]
dos.resolution=0.05
dos.EfShift = true
dos.project = true

pdos.in 输入参数介绍：

pdos.in 与普通态密度的区别在于在计算参数中设置了 dos.project 参数：

dos.project ：表示在态密度计算中打开态密度投影的开关；

2.6.2. run程序运行

准备好输入文件 pdos.in 和 structure.as 以及 rho.bin 之后，将文件上传到服务器上运行，按照结构弛豫中介绍的方法执行 DS-PAW pdos.in 。

2.6.3. analysis计算结果分析

根据上述的输入文件，计算完成之后将会得到 DS-PAW.log 、 dos.json 这2个文件。

dos.json ：态密度计算完成之后的 json 数据文件；此时投影态密度的数据也将会被保存在 dos.json 中，具体的数据结构详见数据结构解析部分；

使用 Device Studio 可直接对 dos.json 文件处理出图，其操作步骤为：Simulator-->DS-PAW-->Analysis Plot，选择 dos.json 即可，可根据作图要求自定义设置面板参数。DS处理得到的投影态密度图如下所示：

另可使用 python 进行数据处理，具体操作见 辅助工具使用教程 部分。

2.7. potential势函数计算

本节将从自洽出发介绍如何使用DS-PAW计算势函数。以 Si 体系为例进行自洽计算（见2.2节），自洽完成之后准备势函数输入文件，并对势函数的结果进行分析。

2.7.1. \(Si\) 势函数计算输入文件

输入文件包含参数文件 potential.in 结构文件 structure.as 和上次自洽计算得到的二进制电荷密度文件 rho.bin ， potential.in 如下：

# task type
task = potential
#system related
sys.structure = structure.as
sys.symmetry = false
sys.functional = LDA
sys.spin = none
#scf related
cal.iniCharge = ./rho.bin
cal.methods = 2
cal.smearing = 1
cal.ksamping = G
cal.kpoints = [10, 10, 10]
cal.cutoffFactor = 1.5
#potential related
potential.type=all

potential.in 输入参数介绍：

在势函数计算中可以尽量保留 sys. 和 cal. 的参数到 potential.in 中，之后设置势函数计算特有的参数即可：

task ：本次计算为 potential 势函数计算，设置task为 potential ；

cal.iniCharge ：表示读取电荷密度二进制文件，支持绝对路径及相对路径，这里./表示当前路径下的 rho.bin 文件；

势函数计算中新增了一个相关的参数：

potential.type ：表示保存势函数的类型，当选择 all 的时候，势函数计算完成之后会同时保存静电势及总的局域势；

structure.as 文件同自洽计算。（见2.2节）

备注

需要设置cal.iniCharge参数的时候，cal.cutoffFactor和cal.cutoff参数必须和之前自洽计算的结果一致，不然读取rho.bin的时候会出现格点数据不匹配的问题；

本案例是调用自洽的结果进行势函数计算，用户也可以在task=scf时设置io.potential=true，此时也能保存potential.json文件。

如果所计算的体系需要考虑偶极修正，此时用户需要在自洽和势函数计算文件中都加入corr.dipol = true以及corr.dipolDirection参数，corr.dipol = true表示打开偶极修正的开关，corr.dipolDirection表示设置偶极修正的方向a、b、c分别表示沿着晶格矢量的a、b、c方向。

偶极修正的具体案例见应用案例：Au-Al体系功函数计算案例。

2.7.2. run程序运行

准备好输入文件 potential.in 和 structure.as 以及 rho.bin 之后，将文件上传到服务器上运行，按照结构弛豫中介绍的方法执行 DS-PAW potential.in 。

2.7.3. analysis计算结果分析

根据上述的输入文件，计算完成之后将会得到 DS-PAW.log 、 potential.json 这2个文件。

potential.json ：势函数计算完成之后的 json 数据文件；

使用 Device Studio 可直接对 potential.json 文件处理出图，其操作步骤为：Simulator-->DS-PAW-->Analysis Plot，选择 potential.json 即可，可根据作图要求自定义设置面板参数作一维、二维、三维的势函数曲线。DS处理得到的势函数一维图如下所示：

另可使用 python 脚本将 potential.json 格式的转化成 VESTA 软件支持的格式，具体操作见 辅助工具使用教程 部分。

2.8. elf电子局域密度计算

本节将从自洽出发介绍如何使用DS-PAW计算电子局域密度ELF。以Si体系为例进行自洽计算（见2.2节），自洽完成之后准备ELF计算，并对ELF作图进行分析。

2.8.1. \(Si\) 电子局域密度计算输入文件

输入文件包含参数文件 ELF.in 结构文件 structure.as 和上次自洽计算得到的二进制电荷密度文件 rho.bin ， ELF.in 如下：

# task type
task = elf
#system related
sys.structure = structure.as
sys.symmetry = false
sys.functional = LDA
sys.spin = none
#scf related
cal.iniCharge = ./rho.bin
cal.methods = 2
cal.smearing = 1
cal.ksamping = G
cal.kpoints = [10, 10, 10]
cal.cutoffFactor = 1.5

ELF.in 输入参数介绍：在ELF计算中可以尽量保留 sys. 和 cal. 的参数到 ELF.in 中： task：本次计算为ELF计算，设置task为elf；

cal.iniCharge ：表示读取电荷密度二进制文件，支持绝对路径及相对路径，这里./表示当前路径下的 rho.bin 文件；

structure.as 文件同（见2.2节）自洽计算的。

备注

需要设置cal.iniCharge参数的时候，cal.cutoffFactor和cal.cutoff参数必须和之前自洽计算的结果一致，不然读取rho.bin的时候会出现格点数据不匹配的问题；

本案例是调用自洽的结果进行ELF计算，用户也可以在task=scf时设置io.elf=true，此时也能保存elf.json文件。

2.8.2. run程序运行

准备好输入文件之后，将 ELF.in 和 structure.as 以及 rho.bin 文件上传到服务器上运行，按照结构弛豫中介绍的方法执行 DS-PAW ELF.in 。

2.8.3. analysis计算结果分析

根据上述的输入文件，计算完成之后将会得到 DS-PAW.log 、 elf.json 这2个文件。

elf.json ：ELF计算完成之后的 json 数据文件；

使用 Device Studio 可直接对 elf.json 文件处理出图，其操作步骤为：Simulator-->DS-PAW-->Analysis Plot，选择 elf.json 即可，可根据作图要求自定义设置面板参数，得到一维、二维、三维的电子局域密度图。DS处理得到的三维电子局域密度图如下所示：

另可使用 python 脚本将 elf.json 格式的转化成 VESTA 软件支持的格式，具体操作见 辅助工具使用教程 部分。

2.9. pcharge部分电荷密度计算

本节将以石墨烯为例分析指定k点下特定能带的电荷密度，自洽完成之后准备部分电荷密度的计算，并对部分电荷密度作图进行分析。

2.9.1. graphene石墨烯部分电荷密度计算输入文件

输入文件包含参数文件 pcharge.in 和结构文件 structure.as ，上次自洽计算得到的二进制电荷密度文件 rho.bin 和二进制波函数文件 wave.bin , pcharge.in 如下：

# task type
task = pcharge
#system related
sys.structure = structure.as
sys.symmetry = false
sys.functional = PBE
sys.spin = collinear
#scf related
cal.methods = 2
cal.smearing = 1
cal.ksamping = G
cal.kpoints = [9, 9, 1]
cal.cutoffFactor = 1.5
#pcharge related
cal.iniCharge = ./rho.bin
cal.iniWave = ./wave.bin
pcharge.bandIndex = [4,5]
pcharge.kpointsIndex = [12]
pcharge.sumK= false

pcharge.in 输入参数介绍：

在部分电荷密度计算中可以尽量保留sys.和cal.的参数到 pcharge.in 中，之后设置部分电荷密度计算特有的参数即可：

task : 本次计算为部分电荷密度计算，设置task为pcharge；

cal.iniCharge : 表示读取电荷密度二进制文件，支持绝对路径及相对路径，这里./表示当前路径下的rho.bin文件；

cal.iniWave : 表示读取波函数二进制文件，支持绝对路径及相对路径，这里./表示当前路径下的wave.bin文件；

pcharge.bandIndex : 指定需进行电荷密度分析的能带的序号，这里[4,5]表示分析能带4和能带5的电荷密度；

pcharge.kpointsIndex : 指定计算某条能带的电荷密度时所用K点数，这里[12]表示分析两条能带的电荷密度时k点都取12；

pcharge.sumK : 表示计算部分电荷密度之后保存数据是否将所有K点，不同能带的数据相加。这里false表示不相加；

structure.as 文件参考如下：

Total number of atoms
2
Lattice
2.46120000 0.00000000 0.00000000
-1.23060000 2.13146172 0.00000000
0.00000000 0.00000000 6.70900000
Cartesian
C  0.61530000  0.35524362  3.35450000
C  0.61530000  1.77621810  3.35450000

备注

部分电荷密度分两步完成，第二步必须读取自洽计算的电荷密度文件以及二进制波函数文件wave.bin。

2.9.2. run程序运行

准备好输入文件 pcharge.in 、 structure.as 以及自洽计算得到的 rho.bin 、 wave.bin 文件上传到服务器上运行，按照结构弛豫中介绍的方法执行 DS-PAW pcharge.in 。

2.9.3. analysis计算结果分析

根据上述的输入文件，计算完成之后将会得到 DS-PAW.log 、 pcharge.json 这2个文件。

pcharge.json ：部分电荷密度计算完成之后的json数据文件，此时两条能带的电荷密度数据被保存在 pcharge.json 中，具体的数据结构详见数据结构解析部分；

使用 Device Studio 可直接对 pcharge.json 文件处理出图，其操作步骤为：Simulator-->DS-PAW-->Analysis Plot，选择 pcharge.json 即可，可根据作图要求自定义设置面板参数。DS处理得到的k点为 12 时能带 4 的电荷密度图如下所示：

另可使用 python 进行数据处理，具体操作见 辅助工具使用教程 部分。

2.10. hse杂化泛函计算

本节将以Si体系为例，介绍DS-PAW程序通过自洽中直接计算能带的方法计算杂化泛函能带，观察使用杂化泛函计算后能带带隙的变化。

2.10.1. \(Si\) 杂化泛函计算输入文件

输入文件包含参数文件 ioband.in 和结构文件 structure.as ， ioband.in 如下：

# task type
task = scf
#system related
sys.structure = structure.as
sys.symmetry = true
sys.functional = PBE
sys.spin = none
#scf related
cal.methods = 1
cal.smearing = 1
cal.ksamping = G
cal.kpoints = [5, 5, 5]
cal.cutoffFactor = 1.5
#band related
io.band = true
band.kpointsCoord=[0.62500000,0.25000000,0.62500000,0.50000000,0.00000000,0.50000000,0.00000000,0.00000000,0.00000000,0.50000000,0.00000000,0.50000000,0.50000000,0.25000000,0.75000000,0.37500000,0.37500000,0.75000000,0.00000000,0.00000000,0.00000000]
band.kpointsLabel = [U,X,G,X,W,K,G]
band.kpointsNumber = [20,20,20,20,20,20]
band.project = false
#HSE related
sys.hybrid=true
sys.hybridType=HSE06
#outputs
io.charge = false
io.wave = false

ioband.in 输入参数介绍：

在杂化泛函计算中可以尽量保留sys.和cal.的参数到 ioband.in 中，之后设置杂化泛函计算特有的参数即可：

sys.hybrid :是否进行杂化泛函计算的开关，true表示引入杂化泛函计算；

sys.hybridType :指定杂化泛函的类型，此例为HSE06；

structure.as 文件同自洽计算。（见2.2节）

备注

杂化泛函计算时赝势的类型必须为PBE。

若分两步计算能带，能带计算的输入文件中需要设置cal.iniWave。

若分两步计算能带，自洽计算和能带计算的输入文件中都需要打开sys.hybrid=true。

2.10.2. run程序运行

准备好输入文件 ioband.in 和 structure.as 上传到服务器上运行，按照结构弛豫中介绍的方法执行 DS-PAW ioband.in 。

2.10.3. analysis计算结果分析

根据上述的输入文件，计算完成之后将会得到 DS-PAW.log 、 band.json 这2个文件。处理 band.json 的方法同（见2.3节）能带计算的方法，DS处理得到的 bandplot.png 文件如下所示，能带图表明打开杂化泛函计算后价带与导带之间的带隙变大，约为 1.2394 eV，不进行杂化泛函计算得到的能带带隙约为 0.6433 eV。

2.10.4. 修改杂化泛函Alpha系数

2.10.1章节展示的杂化泛函方法为HSE06，其对应的杂化泛函系数为默认值0.25，DS-PAW2022A版本新增 sys.hybridAlpha 和 sys.hybridOmega 参数用于控制杂化泛函相关系数，以 sys.hybridAlpha 为例，若对2.10.1的计算参数做如下修改进行分别完成两次计算： scf.in 和 band.in 中增加参数 sys.hybridAlpha = 0.20，以及 scf.in 和 band.in 中增加参数 sys.hybridAlpha = 0.30 ，得到的能带对比图如下所示，分析该图可得通过加大 sys.hybridAlpha 系数可以使能带带隙进一步增大。从 band.json 文件中可读取当 sys.hybridAlpha 分别取值 0.20 、 0.25 、 0.30 时，对应带隙值分别为 1.1146 、1.2394 、 1.3665 。

2.11. vdw范德瓦尔斯修正计算

本节将以石墨体系的结构弛豫为例，介绍在DS-PAW中如何正确的设置范德瓦尔斯修正，并将设置范德瓦尔斯修正与不设置该参数的结果进行对比分析。

2.11.1. graphite石墨结构弛豫输入文件

输入文件包含参数文件 relax.in 和结构文件 structure.as ， relax.in 如下：

# task type
task = relax
#system related
sys.structure = structure.as
sys.symmetry = false
sys.functional = PBE
sys.spin = none
#scf related
cal.methods = 1
cal.smearing = 1
cal.ksamping = G
cal.kpoints = [21, 21, 7]
cal.cutoff  = 450
scf.convergence = 1.0e-05
#relax related
relax.max =  60
relax.freedom = all
relax.convergence =  0.01
relax.methods = CG
#vdw related
corr.VDW = true
corr.VDWType = D3G

relax.in 输入参数介绍：

在范德瓦尔斯修正计算中可以尽量保留sys.和cal.的参数到 relax.in 中，之后设置范德瓦尔斯修正计算特有的参数即可：

corr.VDW : 表示是否引入范德瓦尔斯修正，这里true表示已打开；

corr.VDWType : 表示使用哪种范德瓦尔斯修正，D3G表示DFT-D3 of Grimme方法；

structure.as 文件参考如下：

Total number of atoms
4
Lattice
 2.46729136 0.00000000 0.00000000
 -1.23364568 2.13673699 0.00000000
 0.00000000 0.00000000 7.80307245
Cartesian
C 0.00000000 0.00000000 1.95076811
C 0.00000000 0.00000000 5.85230434
C 0.00000000 1.42449201 1.95076811
C 1.23364689 0.71224492 5.85230434

备注

设置范德瓦尔斯修正时赝势的类型必须为PBE。

2.11.2. run程序运行

准备好输入文件之后，将 relax.in 和 structure.as 文件上传到服务器上运行，按照结构弛豫中介绍的方法执行 DS-PAW relax.in 。

2.11.3. analysis计算结果分析

根据上述的输入文件，计算完成之后将会得到 DS-PAW.log 、 relax.json 和 system.json 这3个文件。（为作对比另添加一组不考虑范德瓦尔斯的计算）

将 relax.json 拖入Device Studio查看结构，或直接查看 paw_tmp 目录下的relax.tmp 文件，可得弛豫结束后晶胞常数如下表所示，通过对比可发现添加范德瓦尔斯修正进行结构弛豫所得晶胞向量 c 的值与实验报道结果[1]更接近。

Procedure

a (Å)

c (Å)

vdw-D3G this work

2.464

7.083

PBE this work

2.464

7.914

Experiment

2.462

6.707

2.12. optical光学性质计算

本节将以Si体系为例，介绍在DS-PAW中如何进行光学性质的计算，并对一系列光学性质的物理量进行作图分析。

2.12.1. \(Si\) 光学性质计算输入文件

输入文件包含参数文件 scf.in 和结构文件 structure.as ， scf.in 如下：

# task type
task = scf
#system related
sys.structure = structure.as
sys.symmetry = true
sys.functional = PBE
sys.spin = none
#scf related
cal.methods = 1
cal.smearing = 1
cal.ksamping = G
cal.kpoints = [4, 4, 4]
cal.cutoffFactor = 1.5
#optical related
io.optical = true

scf.in 输入参数介绍：

在光学性质计算中可以尽量保留sys.和cal.的参数到 scf.in 中，之后设置光学性质计算特有的参数即可：

io.optical : 表示是否进行光学性质的计算，当io.optical=true时，对体系进行光学性质的计算；

structure.as 文件同自洽计算。（见2.2节）

2.12.2. run程序运行

准备好输入文件之后，将 scf.in 和 structure.as 文件上传到服务器上运行，按照结构弛豫中介绍的方法执行 DS-PAW scf.in 。

2.12.3. analysis计算结果分析

根据上述的输入文件，计算完成之后将会得到 DS-PAW.log 、 optical.json 这2个文件。

optical.json ：光学性质计算完成之后的 json 数据文件；此时吸光系数，折射率等物理数据被保存在 optical.json 中，具体的数据结构详见数据结构解析部分；

使用 Device Studio 可直接对 optical.json 文件处理出图，其操作步骤为：Simulator-->DS-PAW-->Analysis Plot，选择 optical.json 即可，可根据作图要求自定义设置面板参数。DS处理得到的吸光系数、消光系数、反射率、折射因子随能量的变化曲线分别如下所示：

另可使用 python 进行数据处理，具体操作见 辅助工具使用教程 部分。

2.13. frequency频率计算

本节将以CO分子为例，介绍在DS-PAW中如何进行频率计算。

2.13.1. \(CO\) 频率计算输入文件

输入文件包含参数文件 frequency.in 和结构文件 structure.as ， frequency.in 如下：

# task type
task = frequency
#system related
sys.structure = structure.as
sys.symmetry = false
sys.functional = PBE
sys.spin = none
#scf related
cal.methods = 2
cal.smearing = 1
cal.ksamping = MP
cal.kpoints = [9, 9, 1]
cal.cutoffFactor = 1.5
scf.convergence = 1.0e-6
#frequency related
frequency.dispOrder = 1
frequency.dispRange = 0.02
#outputs
io.charge = false
io.wave = false

frequency.in 输入参数介绍：

在频率计算中可以尽量保留sys.和cal.的参数到 frequency.in 中，之后设置频率计算特有的参数即可：

task : 本次计算为频率计算，设置task为frequency；

frequency.dispOrder : 表示频率计算时原子振动的方式。1对应中心差分法，即2种原子振动方式：每个笛卡尔方向上原子的位移为 ±frequency.dispRange ；2对应4种原子振动方式：每个笛卡尔方向上原子的位移为 ±frequency.dispRange 和 ±2*frequency.dispRange ；

frequency.dispRange : 表示频率计算时的原子位移大小；

structure.as 文件参考如下：

Total number of atoms
2
Lattice
 8.0 0.0 0.0
 0.0 8.0 0.0
 0.0 0.0 8.0
Cartesian  Fix_x Fix_y Fix_z
O 0 0 0       T T F
C 0 0 1.143   T T F

备注

频率计算时应提高自洽计算的收敛精度，建议设置为1.0e-6以上。

CO只在z方向上两个原子可动。

2.13.2. run程序运行

准备好输入文件之后，将 frequency.in 和 structure.as 文件上传到服务器上运行，按照结构弛豫中介绍的方法执行 DS-PAW frequency.in 。

2.13.3. analysis计算结果分析

根据上述的输入文件，计算完成之后将会得到 DS-PAW.log 、 frequency.json 、 frequency.txt 这3个文件。

frequency.json ：频率计算完成之后的json数据文件，此时频率数据被保存在该文件中，具体的数据结构详见数据结构解析部分。

frequency.txt :频率计算完成之后的 txt 文本文件，该文件写入频率相关数据，与 frequency.json 文件数据一致，便于用户快速获取信息。

从 frequency.txt 中可获取以下数据：

Frequency

THz

2PiTHz

cm-1

meV

1 f

63.843104

401.138041

2129.576594

264.033942

2 f/i

0.051123

0.321218

1.705293

0.211429

CO只在z方向上两个原子可动，因此只有两个频率，通过上表可以看到一个振动模式的频率约为 63.8 THz，还有一个在 0 附近的虚频，一般情况虚频小于2THz基本可以忽略不计。

2.14. elastic弹性常数计算

本节将以Si体系为例，介绍在DS-PAW中如何进行弹性计算。

2.14.1. \(Si\) 弹性常数计算输入文件

输入文件包含参数文件 elastic.in 和结构文件 structure.as ， elastic.in 如下：

# task type
task = elastic
#system related
sys.structure = structure.as
sys.symmetry = true
sys.functional = PBE
sys.spin = none
#scf related
cal.methods = 1
cal.smearing = 1
cal.ksamping = G
cal.kpoints = [5, 5, 5]
cal.cutoffFactor = 1.5
scf.convergence = 1.0e-6
#frequency related
elastic.dispOrder = 1
elastic.dispRange = 0.01
#outputs
io.charge = false
io.wave = false

elastic.in 输入参数介绍：

在弹性计算中可以尽量保留sys.和cal.的参数到 elastic.in 中，之后设置弹性计算特有的参数即可：

task : 本次计算为弹性计算，设置task为elastic；

elastic.dispOrder : 表示弹性计算时原子振动的方式, 1对应中心差分法；

elastic.dispRange : 表示弹性计算时的原子位移大小；

structure.as 文件参考如下：

Total number of atoms
8
Lattice
 5.43070000 0.00000000 0.00000000
 0.00000000 5.43070000 0.00000000
 0.00000000 0.00000000 5.43070000
Cartesian
Si 0.67883750 0.67883750 0.67883750
Si 3.39418750 3.39418750 0.67883750
Si 3.39418750 0.67883750 3.39418750
Si 0.67883750 3.39418750 3.39418750
Si 2.03651250 2.03651250 2.03651250
Si 4.75186250 4.75186250 2.03651250
Si 4.75186250 2.03651250 4.75186250
Si 2.03651250 4.75186250 4.75186250

备注

弹性计算时应提高自洽计算的收敛精度，建议设置在1.0e-6以上。

弹性计算不支持固定原子。

2.14.2. run程序运行

准备好输入文件之后，将 elastic.in 和 structure.as 文件上传到服务器上运行，按照结构弛豫中介绍的方法执行 DS-PAW elastic.in 。

2.14.3. analysis计算结果分析

根据上述的输入文件，计算完成之后将会得到 DS-PAW.log 、 elastic.json 、 elastic.txt 这3个文件。

elastic.json : 弹性计算完成之后的 json 数据文件，此时弹性模量被保存在 elastic.json 中，具体的数据结构详见数据结构解析部分；

elastic.txt : 弹性计算完成之后的 txt 文本文件，该文件写入弹性相关数据，与 elastic.json 文件数据一致，便于用户快速获取信息。

从 elastic.txt 文件可得如下弹性常数矩阵：

158.7644

62.9858

62.9858

0.0000

-0.0000

0.0000

62.9858

158.7644

62.9858

0.0000

0.0000

0.0000

62.9858

62.9858

158.7644

-0.0000

0.0000

0.0000

0.0000

0.0000

-0.0000

75.8807

-0.0000

0.0000

-0.0000

0.0000

0.0000

-0.0000

75.8807

-0.0000

0.0000

0.0000

0.0000

0.0000

-0.0000

75.8807

刚性弹性矩阵

0.0081

-0.0023

-0.0023

-0.0000

0.0000

-0.0000

-0.0023

0.0081

-0.0023

-0.0000

-0.0000

0.0000

-0.0023

-0.0023

0.0081

0.0000

-0.0000

0.0000

-0.0000

-0.0000

0.0000

0.0132

0.0000

-0.0000

0.0000

-0.0000

-0.0000

0.0000

0.0132

0.0000

-0.0000

0.0000

0.0000

-0.0000

0.0000

0.0132

柔性弹性矩阵

Properties

Vogit

Reuss

Hill

BulkModulus(GPa)

94.9120

94.9120

94.9120

ShearModulus(GPa)

64.6841

61.5016

63.0929

YoungModulus(GPa)

158.1297

151.7315

154.9452

PoissonRatio

0.2223

0.2336

0.2279

体积模量、剪切模量、杨氏模量和泊松比

Si体系为Cubic晶系，该晶系的独立矩阵元有三个：C11 ， C12 ， C44 ，分别对应表中的 158.7644、62.9858、75.8807。

2.15. neb过渡态计算

本节将以Pt原子体系为例，介绍在DS-PAW中如何进行过渡态计算（Cl-NEB），并对结果进行作图分析。

2.15.1. \(Pt\) 过渡态计算输入文件

输入文件包含参数文件 neb.in 和多个结构文件 structure##.as ， neb.in 文件如下：

# task type
task = neb
#system related
sys.structure = structure.as
sys.symmetry = false
sys.functional = PBE
sys.spin = none
#scf related
cal.methods = 1
cal.smearing = 1
cal.ksamping = G
cal.kpoints = [3, 3, 1]
cal.cutoffFactor = 1.5
#neb related
neb.max = 60
neb.iniFin=true
neb.springK = 5
neb.images = 5
neb.method = LBFGS
neb.convergence = 0.1
#outputs
io.charge = false
io.wave = false

neb.in 输入参数介绍：

在过渡态计算中可以尽量保留sys.和cal.的参数到 neb.in 中，之后设置过渡态计算特有的参数即可：

task ：本次计算为过渡态计算，设置task为neb；

neb.stepRange : 表示过渡态计算中结构弛豫的步长；

neb.max : 表示过渡态计算中结构弛豫的最大步数；

neb.iniFin : 表示过渡态计算中初态结构和末态结构是否进行自洽计算，true表示进行自洽计算；

neb.springK : 表示过渡态计算中弹簧系数K；

neb.images : 表示过渡态计算中的中间结构的数目；

neb.method : 表示过渡态计算中使用的算法；

neb.convergence : 表示过渡态计算中受力的收敛标准；

structure.as 需提供多个，初态结构 structure00.as 参考如下

Total number of atoms
13
Lattice
5.6058       0       0
0  5.6058       0
0       0 16.8174
Cartesian Fix_x Fix_y Fix_z
Pt  1.40145 1.40145 1.98193  T T T
Pt  4.20435 1.40145 1.98193  T T T
Pt  1.40145 4.20435 1.98193  T T T
Pt  4.20435 4.20435 1.98193  T T T
Pt        0       0 3.89338  F F F
Pt        0  2.8029 3.89869  F F F
Pt   2.8029       0 3.96355  F F F
Pt   2.8029  2.8029 3.89338  F F F
Pt  1.43659 1.36631 5.86749  F F F
Pt  4.16921 1.36631 5.86749  F F F
Pt  1.43659 4.23949 5.86749  F F F
Pt  4.16921 4.23949 5.86749  F F F
Pt        0  2.8029 7.51195  F F F

末态结构 structure06.as 参考如下

Total number of atoms
13
Lattice
 5.6058       0       0
      0  5.6058       0
      0       0 16.8174
Cartesian Fix_x Fix_y Fix_z
Pt  1.40145 1.40145 1.98193  T T T
Pt  4.20435 1.40145 1.98193  T T T
Pt  1.40145 4.20435 1.98193  T T T
Pt  4.20435 4.20435 1.98193  T T T
Pt        0       0 3.89338  F F F
Pt        0  2.8029 3.89869  F F F
Pt   2.8029       0 3.96355  F F F
Pt   2.8029  2.8029 3.89338  F F F
Pt   2.8029       0 7.51195  F F F
Pt  4.23949 1.43659 5.86749  F F F
Pt  1.36631 4.16921 5.86749  F F F
Pt  4.23949 4.16921 5.86749  F F F
Pt  1.36631 1.43659 5.86749  F F F

备注

过渡态计算时需准备多个结构文件，命名规则为structure##.as，##为结构序号，从00开始编号，00对应初态，依次递增。

中间结构的生成可参考"辅助工具使用教程-过渡态部分“。

过渡态计算时的结构文件structure##.as需存放在命名为##的文件夹中，文件夹序号与结构文件的序号需一致。文件夹外放置一个neb.in文件即可，在neb.in所在目录执行程序。

过渡态计算执行程序时调用的核数设置为images的整数倍。

neb计算时初态末态需先进行结构弛豫。

2.15.2. run程序运行

准备好输入文件之后，将 neb.in 文件和包含 structure##.as 文件的多个文件夹文件上传到服务器上运行，按照结构弛豫中介绍的方法执行 DS-PAW neb.in 。

2.15.3. analysis计算结果分析

根据上述的输入文件，计算完成之后初态和末态结构所在文件夹会生成自洽计算所得的 DS-PAW.log 、 system.json 这2个文件，中间结构 structure##.as 所在文件夹 ## （参与过渡态计算的结构，由 neb.images 参数决定）会生成结构优化所得的 relax.json 、 system.json 、 neb##.json 、 paw_tmp/neb.tmp 这4个文件。最外层目录将会生成 DS-PAW.log 、 neb.json 这2个文件，其中 neb.json 为各 neb##.json 文件的信息汇总。

neb.json ：过渡态计算完成之后的 json 数据文件；此时反应坐标及能量变化等数据被保存在 neb.json 中，具体的数据结构详见数据结构解析部分；

paw_tmp/neb.tmp ：中间构型在优化过程中的轨迹文件，默认neb计算过程中每个离子步记录一次结构信息；

使用 Device Studio 可直接对 neb.json 文件处理出图，其操作步骤为：Simulator-->DS-PAW-->Analysis Plot，选择 neb.json 即可，可根据作图要求自定义设置面板参数。DS处理得到的势垒曲线及image3在弛豫过程中的能量与受力曲线如下所示：

除此以外，DS可以以gif动画的形式展示过渡态搜寻中的轨迹变化，在面板依次选择 Simulator-->DS-PAW-->Analysis Plot-->neb.json-->Trajectory 即可，以下为截取其中一帧的图像：

另可使用 python 进行数据处理，具体操作见 辅助工具使用教程 部分。

2.16. phonon声子谱计算

本节介绍DS-PAW程序如何进行声子计算及声子能带和声子态密度计算。DS-PAW支持两种声子谱计算的方法：fd有限位移法和dfpt密度泛函微扰理论方法。本节以单个MgO体系为例，介绍如何用dfpt方法计算声子能带和态密度，并对声子能带和态密度作图进行分析。

2.16.1. \(MgO\) 声子谱能带计算输入文件

输入文件包含参数文件 phonon.in 和结构文件 structure.as ， phonon.in 如下：

task = phonon

sys.structure = structure.as
sys.functional = PBE
sys.spin = none

cal.methods = 1
cal.smearing = 1
sys.symmetry = true
scf.convergence = 1.0e-07
cal.ksamping = G
cal.kpoints = [3,3,3]
cal.sigma = 0.25

phonon.type = bandDos
phonon.structureSize = [2,2,2]
phonon.primitiveUVW = [0.0, 0.5, 0.5, 0.5, 0.0, 0.5, 0.5, 0.5, 0.0]
phonon.method = dfpt
phonon.qpoints = [41,41,41]
phonon.dosRange = [0,20]
phonon.qpointsLabel = [G,X,W,G,M]
phonon.qpointsCoord = [0.0, 0.0, 0.0, 0.5, 0.0, 0.0, 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.5]
phonon.qpointsNumber = 51

io.charge = false
io.wave = false

phonon.in 输入参数介绍：

在声子计算中可以尽量保留sys.和cal.的参数到 phonon.in 中，之后设置声子计算特有的参数即可：

task : 本次计算为声子计算，设置task为phonon；

phonon.type : 表示声子计算哪些性质，bandDos对应计算声子能带和态密度；

phonon.structureSize : 声子计算时超胞的大小；

phonon.primitiveUVW : 表示声子能带计算时原胞UVW的系数；

phonon.method : 表示声子计算的方式，dfpt为密度泛函微扰理论方法；

phonon.qpoints : 表示声子计算q空间网格取样为41*41*41；

phonon.dosRange : 表示声子态密度计算的能量区间为[0,20]；

phonon.qpointsLabel : 表示声子能带计算时高对称点标签；

phonon.qpointsCoord : 表示声子能带计算时高对称点坐标；

phonon.qpointsNumber : 表示声子能带相邻两个高对称点的间隔；

structure.as 文件参考如下：

Total number of atoms
8
Lattice
     4.2555564654942897    0.0000000000000000    0.0000000000000000
     0.0000000000000000    4.2555564654942888    0.0000000000000000
     0.0000000000000000    0.0000000000000000    4.2555564654942897
Direct
Mg  0.0000000000000000  0.0000000000000000  0.0000000000000000
Mg  0.0000000000000000  0.5000000000000000  0.5000000000000000
Mg  0.5000000000000000  0.0000000000000000  0.5000000000000000
Mg  0.5000000000000000  0.5000000000000000  0.0000000000000000
O   0.5000000000000000  0.5000000000000000  0.5000000000000000
O   0.5000000000000000  0.0000000000000000  0.0000000000000000
O   0.0000000000000000  0.5000000000000000  0.0000000000000000
O   0.0000000000000000  0.0000000000000000  0.5000000000000000

备注

声子计算时应提高自洽计算的收敛精度，建议设置在1.0e-7以上。

计算声子之前建议先作结构弛豫计算（relax.freedom = all），便于得到准确的声子谱图。

声子计算时若打开对称性，建议适当提高对称性判断的精度，参数sys.symmetryAccuracy可设置为1.0e-6或更小，助于得到准确的计算结果。

phonon.iniPhonon可指定路径读取声子计算（phonon.type = phonon）得到的phonon.json文件，从而直接进行能带与态密度的计算。

phonon.type控制计算声子的类型，phonon对应计算声子，band对应计算声子能带，dos对应计算声子态密度，bandDos对应同时计算声子能带和态密度。当phonon.type = band/dos/bandDos且phonon.iniPhonon未指定文件路径时，程序先自动完成phonon.type = phonon的声子计算，然后根据任务计算能带或态密度。

2.16.2. run程序运行

准备好输入文件之后，将 phonon.in 和 structure.as 文件上传到服务器上运行，按照结构弛豫中介绍的方法执行 DS-PAW phonon.in 。

2.16.3. analysis计算结果分析

根据上述的输入文件，计算完成之后将会得到 DS-PAW.log 、 phonon.json 、 dfpt.json 和 dfpt.as 这4个文件。

dfpt.as ：声子计算时超胞的结构文件，计算声子时读取该文件信息。

dfpt.json ：声子计算时的参数文件，该文件与 phonon.in 文件信息一致，计算声子时读取该文件信息。

phonon.json ：声子计算完成之后的 json 数据文件；此时声子能带数据被保存在 phonon.json 中，具体的数据结构详见数据结构解析部分；

使用 Device Studio 可直接对 phonon.json 文件处理出图，其操作步骤为：Simulator-->DS-PAW-->Analysis Plot，选择 phonon.json 即可，可根据作图要求自定义设置面板参数，处理得到的声子能带和态密度图如下（a）、（b）所示：

(a)

(b)

2.16.4. nac计算结果分析

上节展示的为不考虑长程相互作用的声子能带计算，若打开 non-analytical term correction (nac) 进行声子计算，在上节所示的 phonon.in 文件中添加以下两个参数即可：

phonon.dfptEpsilon=true
phonon.nac = true

得到的声子能带图如下（c）所示：

(c)

另可使用 python 进行数据处理，具体操作见 辅助工具使用教程 部分。

2.16.5. fdphonon有限位移法计算声子

有限位移法（fd） 计算的输入文件如下所示，将参数 phonon.method = dfpt 修改为 phonon.method = fd 即可，需要注意的是，fd法计算得到输出文件与dfpt法不同。

task = phonon

sys.structure = structure.as
sys.functional = PBE
sys.spin = none

cal.methods = 1
cal.smearing = 1
sys.symmetry = true
scf.convergence = 1.0e-07
cal.ksamping = G
cal.kpoints = [3,3,3]
cal.sigma = 0.25

phonon.type = bandDos
phonon.structureSize = [2,2,2]
phonon.primitiveUVW = [0.0, 0.5, 0.5, 0.5, 0.0, 0.5, 0.5, 0.5, 0.0]
phonon.method = fd
phonon.qpointsLabel = [G,X,W,G,M]
phonon.qpointsCoord = [0.0, 0.0, 0.0, 0.5, 0.0, 0.0, 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.5]
phonon.qpointsNumber = 51

io.charge = false
io.wave = false

以MgO体系为例， phonon.structureSize 设置为 [2,2,2] ，fd法计算完成之后将会得到 DS-PAW.log 、 phonon.json 两个文件 和 001 、 002 文件夹。 001 文件夹下存在 input.json 和 disp-001.as 文件，002 文件夹下存在 input.json 和 disp-002.as 文件，子文件夹中的两个文件等同于写入输入参数的 in 文件和结构参数的 as 文件，生成文件夹（001 002...）的个数取决于体系的对称性。

用 Device Studio 处理fd法计算得到的 phonon.json 文件，得到能带图及态密度图同dfpt方法计算得到的图（a）与（b）一致。

备注

介电常数的计算只在phonon.method = dfpt时才能完成

phonon.nac的开关只在phonon.method = dfpt且phonon.dfptEpsilon=true时生效

2.17. soc自旋轨道耦合计算

本节介绍DS-PAW如何进行自旋轨道耦合计算。以 \(Bi_{2}Se_{3}\) 体系为例，使用两步法进行能带计算并对能带进行作图分析。

2.17.1. \(Bi_{2}Se_{3}\) 自旋轨道耦合计算输入文件

首先进行自洽计算：输入文件包含参数文件 soi.in 和结构文件 structure.as ， soi.in 如下：

# task type
task = scf
#system related
sys.structure = structure.as
sys.symmetry = true
sys.functional = LDA
#scf related
cal.methods = 2
cal.smearing = 1
cal.ksamping = G
cal.kpoints = [7, 7, 7]
cal.cutoffFactor = 1.5
#soi related
sys.spin= non-collinear
sys.soi = true
#outputs
io.charge = true
io.wave = false

soi.in 输入参数介绍：

在自旋轨道耦合计算中可以尽量保留sys.和cal.的参数到 soi.in 中，之后设置自旋轨道耦合计算特有的参数即可：

soi.spin : 指定计算的自旋性质，non-collinear 表示一般自旋；

sys.soi : 表示是否考虑自旋轨道耦合效应；自旋轨道耦合效应需要在sys.spin=non-collinear时才会生效；

structure.as 文件参考如下：

Total number of atoms
5
Lattice
-2.069  -3.583614  0.000000
 2.069  -3.583614  0.000000
 0.000   2.389075  9.546667
Direct
Bi 0.3990 0.3990 0.6970
Bi 0.6010 0.6010 0.3030
Se 0.0000 0.0000 0.5000
Se 0.2060 0.2060 0.1180
Se 0.7940 0.7940 0.8820

然后进行能带计算：输入文件包含参数文件 soiband.in ，内容如下

# task type
task = band
#system related
sys.structure = structure.as
sys.symmetry = true
sys.functional = LDA
#scf related
cal.methods = 2
cal.smearing = 1
cal.ksamping = G
cal.kpoints = [7, 7, 7]
cal.cutoffFactor = 1.5
#band related
cal.iniCharge = ./rho.bin
band.kpointsCoord = [0.00000000,0.00000000,0.00000000,0.00000000,0.00000000,0.50000000,0.50000000,0.50000000,0.00000000,0.00000000,0.00000000,0.00000000,0.50000000,0.00000000,0.00000000]
band.kpointsLabel = [G,Z,F,G,L]
band.kpointsNumber = [20,20,20,20]
band.project = true
#soi related
sys.spin= non-collinear
sys.soi = true

soiband.in 输入参数介绍：

在自旋轨道耦合能带计算中，保留自洽计算和自旋轨道耦合计算的参数到 soiband.in 中，之后设置能带计算的特有参数即可。

备注

初始磁矩的设置参考“应用案例-NiO体系的反铁磁计算”，在structure.as文件的第七行设置Mag标签即可。

2.17.2. run程序运行

准备好输入文件之后，将 soi.in 、 soiband.in 和 structure.as 文件上传到服务器上运行，按照结构弛豫中介绍的方法分别执行 DS-PAW soi.in 和 DS-PAW soiband.in 。

2.17.3. analysis计算结果分析

根据上述的输入文件，计算完成之后将会得到 DS-PAW.log 、 system.json 和 band.json 这3个文件。

处理 band.json 的方法同（见2.3节）能带计算的方法，DS处理得到的 bandplot.png 文件如下图（a）所示，另作不考虑自旋轨道耦合的计算，得到的能带图如下（b）所示：

(a)

(b)

从 band.json 可读取 BandGap 值，图（a）和图（b）的带隙值分别为 0.3251 和 0.0814 ，可得结论：进行自旋轨道耦合计算可加大价带与导带之间的带隙。

2.18. aimd分子动力学模拟

本节将以水分子体系为例，介绍在DS-PAW中如何进行分子动力学模拟计算。

2.18.1. \(H_{2}O\) 分子动力学模拟输入文件

输入文件包含参数文件 aimd.in 和结构文件 structure.as ， aimd.in 如下：

# task type
task = aimd
#system related
sys.structure = structure.as
sys.symmetry = false
sys.functional = LDA
sys.spin = none
#scf related
cal.methods = 1
cal.smearing = 2
cal.ksamping = G
cal.kpoints = [1, 1, 1]
cal.cutoffFactor = 1.5
#aimd related
aimd.ensemble = NVE
aimd.timeStep = 1
aimd.totalSteps = 1000
aimd.iniTemp = 2000
#outputs
io.charge = false
io.wave = false

aimd.in 输入参数介绍：

在分子动力学模拟计算中可以尽量保留sys.和cal.的参数到 aimd.in 中，之后设置分子动力学模拟计算特有的参数即可：

task : 本次计算为分子动力学计算，设置task为aimd；

aimd.ensemble : 表示分子动力学模拟时选用的系综；

aimd.timeStep : 表示分子动力学模拟时的时间步长；

aimd.totalSteps : 表示分子动力学模拟的总步数；

aimd.iniTemp : 表示分子动力学模拟时的初始温度；

structure.as 文件参考如下：

Total number of atoms
3
Lattice
6.35016 0 0
0 6.35016 0
0 0 6.35016
Direct
O 0.00000    0.00000    0.00000
H 0.09167   -0.11917    0.00000
H 0.09167    0.11917    0.00000

2.18.2. run程序运行

准备好输入文件之后，将 aimd.in 和 structure.as 文件上传到服务器上运行，按照结构弛豫中介绍的方法执行 DS-PAW aimd.in 。

2.18.3. analysis计算结果分析

根据上述的输入文件，计算完成之后将会得到 DS-PAW.log 、 aimd.json 、 paw_tmp/aimd.tmp 这3个文件。

aimd.json : 分子动力学计算完成之后的 json 数据文件；此时模拟时间内原子位置、体系能量和温度等数据被保存在 aimd.json 中，具体的数据结构详见数据结构解析部分；

paw_tmp/aimd.tmp : 分子动力学计算中的轨迹文件，默认aimd计算中每20个离子步记录一次结构信息；

使用 Device Studio 可直接对 aimd.json 文件处理出图，其操作步骤为：Simulator-->DS-PAW-->Analysis Plot，选择 aimd.json 即可，可根据作图要求自定义设置面板参数。DS可以播放在模拟过程中分子的运动轨迹，截取其中一帧的结构图如下图所示：

另可使用 python 进行数据处理，将 aimd.json 转为 pdb 文件，具体操作见 辅助工具使用教程 部分。

备注

本例设置的系综为nve，设置nvt系综时可选择程序支持的两种控温器，通过 aimd.thermostat 参数设置；

如需模拟高温退火过程，设置 aimd.ensemble 为 TS，同时通过 aimd.iniTemp 和 aimd.iniTemp 设置初始和末态温度即可。

2.19. efield外加电场计算

本节将以硅烯模型为例，介绍在DS-PAW中如何进行外加电场计算，分析加电场前后带隙打开情况。

2.19.1. Si硅烯真空方向外加电场计算输入文件

输入文件包含参数文件 Efield.in 和结构文件 structure.as ， Efield.in 如下：

# task type
task = scf
#system related
sys.structure = structure.as
sys.symmetry = true
sys.functional = PBE
sys.spin = none

#scf related
cal.sigma = 0.1
cal.cutoff = 520
cal.ksamping = G
cal.kpoints = [9, 9, 1]

scf.convergence = 1e-5

#outputs
io.charge = false
io.wave = false
io.band = true

corr.dipol=true
corr.dipolDirection = c
corr.dipolEfield = 0.2

band.kpointsLabel = [G,M,K,G]
band.kpointsCoord = [0.00000000,0.00000000,0.00000000,0.50000000,0.00000000,0.00000000,0.33333333,0.33333333,0.00000000,0.00000000,0.00000000,0.00000000]
band.kpointsNumber = [100,100,100]

Efield.in 输入参数介绍：

该计算是在一步能带计算的基础上外加电场，除能带计算的基本参数，新增参数为下：

corr.dipolEfield : 设置外加电场的大小，注意该参数只在 corr.dipol = true 和设置 corr.dipolDirection 的情况下生效；

structure.as 文件参考如下：

Total number of atoms
2
Lattice
  3.860000   0.000000   0.000000
 -1.930000   3.342860   0.000000
  0.000000   0.000000  26.460000
Direct
Si   0.333333   0.166667   0.396825
Si   0.666758   0.833380   0.379216

2.19.2. run程序运行

准备好输入文件之后，将 Efield.in 和 structure.as 文件上传到服务器上运行，按照结构弛豫中介绍的方法执行 DS-PAW Efield.in 。

2.19.3. analysis计算结果分析

根据上述的输入文件，计算完成之后将会得到 DS-PAW.log 、 band.json 这2个文件。

band.json ：计算完成之后的 json 数据文件；

此例中参数 corr.dipolEfield = 0.2 ，即外加电场的大小为 0.2 eV/Å， 在该电场下进行能带计算得到的能带图如图（a）所示，

(a)

若设置参数 corr.dipolEfield = 0 重复以上计算，即在无电场的情况下进行能带计算得到的能带图如图（b）所示，

(b)

对比图（a）和图（b）可得结论：通过外加电场可以打开硅烯的带隙。 从 band.json 文件可读出加电场与不加电场 BandGap 的值分别为 0.1176 和 0.0010 。

备注

外加电场的单位 eV/Å 为原子受力的单位

2.20. ferri铁电计算

本节将以 \(HfO_{2}\) 为例，介绍在DS-PAW中如何使用现代极化理论进行铁电计算，分析 \(HfO_{2}\) 的铁电极化。

2.20.1. \(HfO_{2}\) 铁电计算输入文件

输入文件包含参数文件 polarization.in 和结构文件 structure.as ， polarization.in 如下：

# task type
task = scf
#system related
sys.structure = structure.as
sys.symmetry = true
sys.functional = PBE
sys.spin = none

#scf related
cal.methods = 3
cal.smearing = 4
cal.sigma = 0.05
cal.cutoff = 520
cal.ksamping = MP
cal.kpoints = [4, 4, 4]

scf.convergence = 1e-5

#outputs
io.charge = false
io.wave = false
io.polarization = true

polarization.in 输入参数介绍：

该计算是在自洽计算的基础上进行铁电计算，除自洽计算的基本参数，新增参数为下：

io.polarization : 在自洽计算中打开控制铁电计算的开关，即可快速实现铁电计算；

structure.as 文件参考如下：

Total number of atoms
12
Lattice
 5.04621935 0.00000000 0.00000000
 0.00000000 5.07315250 0.00000000
 0.00000000 0.00000000 5.25768906
Cartesian
Hf 1.34815269 1.22145223 0.17639072
Hf 1.34815269 3.75802848 2.45245381
Hf 3.69806666 1.22145223 2.80523525
Hf 3.69806666 3.75802848 5.08129834
O 0.35195212 1.93667285 1.92589951
O 0.35195212 4.47324910 0.70294502
O 2.32678304 2.48829365 3.85528784
O 2.32678304 5.02486990 4.03124575
O 2.71943630 5.02486990 1.40240122
O 2.71943630 2.48829365 1.22644331
O 4.69426723 1.93667285 4.55474404
O 4.69426723 4.47324910 3.33178955

2.20.2. run程序运行

准备好输入文件之后，将 polarization.in 和 structure.as 文件上传到服务器上运行，按照结构弛豫中介绍的方法执行 DS-PAW polarization.in 。

2.20.3. analysis计算结果分析

根据上述的输入文件，计算完成之后将会得到 DS-PAW.log 、 polarization.json 和 polarization.txt 这3个文件。

polarization.json ：铁电极化计算完成之后的 json 数据文件，电子、离子贡献的极化部分及总的极化量子数存储在该文件中，具体文件解析见输出文件格式说明部分；

polarization.txt : 铁电极化计算完成之后的 txt 文本文件，该文件写入极化数据，与 polarization.json 文件数据一致，便于用户快速获取信息。

从 polarization.txt 文件可得 \(HfO_{2}\) 的铁电极化数据如下所示：

Total(x y z) ((μC/cm^2))

-0.000001

-8.715113

0.000000

Quantum(x y z) (μC/cm^2)

60.067225

60.387821

62.584436

通过极化量子的周期性换算，可得y方向上 \(HfO_{2}\) 的极化数为 51.672 μC/cm^2 ，与文献报道结果[2] 53 μC/cm^2 一致。

2.21. bader电荷计算

本节将以NaCl晶体为例，介绍在DS-PAW中如何进行bader电荷计算，分析NaCl体系中各原子的价态分布。

2.21.1. \(NaCl\) 晶体Bader电荷计算输入文件

输入文件包含参数文件 bader.in 和结构文件 structure.as ， bader.in 如下：

bader.in 文件参考如下：

# task type
task = scf
#system related
sys.structure = structure.as
sys.symmetry = false
sys.functional = PBE
sys.spin = none

#scf related
cal.methods = 1
cal.smearing = 1
cal.ksamping = G
cal.kpoints = [10, 10, 10]
cal.cutoff = 500
#outputs
io.charge = true
io.wave = false
io.bader = true

bader.in 输入参数介绍：

该计算是在自洽计算的基础上进行bader电荷计算，除自洽计算的基本参数，新增参数为下：

io.bader : 在自洽计算中打开控制bader电荷计算的开关，即可快速实现bader电荷计算；

structure.as 文件参考如下：

Total number of atoms
 8
 Lattice
  5.68452692 0.00000000 0.00000000
  0.00000000 5.68452692 0.00000000
  0.00000000 0.00000000 5.68452692
 Cartesian
 Na 4.26339519 1.42113173 1.42113173
 Na 1.42113173 4.26339519 1.42113173
 Na 1.42113173 1.42113173 4.26339519
 Na 4.26339519 4.26339519 4.26339519
 Cl 1.42113173 1.42113173 1.42113173
 Cl 4.26339519 4.26339519 1.42113173
 Cl 4.26339519 1.42113173 4.26339519
 Cl 1.42113173 4.26339519 4.26339519

备注

io.bader = true 时，io.charge 必须设置为true

2.21.2. run程序运行

准备好输入文件之后，将 bader.in 和 structure.as 文件上传到服务器上运行，按照结构弛豫中介绍的方法执行 DS-PAW bader.in 。

2.21.3. analysis计算结果分析

根据上述的输入文件，计算完成之后将会得到 DS-PAW.log 、 bader.json 、 bader.txt 这3个文件。

bader.json ：bader电荷计算完成之后的 json 数据文件，各原子的Bader电荷等数据存储在该文件中，具体的数据结构详见 输出文件格式说明 部分；

bader.txt : bader电荷计算完成之后的 txt 文本文件，该文件写入bader电荷数据，与 bader.json 文件数据一致，便于用户快速获取信息。

bader.txt 文本内容如下所示，bader电荷分析得到的数据与utexas大学的Henkelman小组得到的数据吻合。https://theory.cm.utexas.edu/henkelman/code/bader/

Total number of valence electronics: 64

Element

X

Y

Z

Charge

AtomicVolume

MinDistance

Cl

0.25

0.25

0.25

7.83165

34.846

1.59877

Cl

0.75

0.75

0.25

7.87519

36.8613

1.59877

Cl

0.75

0.25

0.75

7.84614

35.5159

1.59877

Cl

0.25

0.75

0.75

7.86064

36.1858

1.59877

Na

0.75

0.25

0.25

8.1466

10.07

1.11292

Na

0.25

0.75

0.25

8.1466

10.07

1.11292

Na

0.25

0.25

0.75

8.1466

10.07

1.11292

Na

0.75

0.75

0.75

8.1466

10.07

1.11292

2.22. bandunfolding能带反折叠计算

本节将以 \(Cu_{3}Au\) 体系为例，介绍在DS-PAW中如何进行能带反折叠计算，分析 \(Cu_{3}Au\) 反折叠的能带图。

2.22.1. \(Cu_{3}Au\) 能带反折叠计算输入文件

能带反折叠计算需两步法完成能带计算，因此输入文件包含参数文件 scf.in 、 bandunfolding.in 和结构文件 structure.as ，

scf.in 如下：

task = scf

sys.structure = structure.as
sys.symmetry = true
sys.functional = PBE
sys.spin = none

cal.methods = 1
cal.smearing = 1
cal.ksamping = MP
cal.kpoints = [3, 3, 3]
cal.cutoff = 500

scf.convergence = 1.0e-05

io.charge = true
io.wave = false

bandunfolding.in 如下：

task = band
cal.iniCharge = ./rho.bin

sys.structure = structure.as
sys.symmetry = true
sys.functional = PBE
sys.spin = none

cal.methods = 1
cal.smearing = 1
cal.ksamping = MP
cal.kpoints = [3, 3, 3]
cal.cutoff = 500

scf.convergence = 1.0e-05

band.unfolding = true
band.primitiveUVW=[0.0, 0.5, 0.5, 0.5, 0.0, 0.5, 0.5, 0.5, 0.0]
band.kpointsLabel= [R,G,X]
band.kpointsCoord= [0.5, 0.5, 0.5, 0.0, 0.0, 0.0, 0.5, 0.0, 0.5]
band.kpointsNumber= [101, 101]

io.charge = false
io.wave = false

bandunfolding.in 输入参数介绍：

能带反折叠计算是在能带计算的基础上完成的，且能带计算必须通过两步法完成。除能带计算的基本参数，新增参数为下：

band.unfolding : 在能带计算中打开能带反折叠计算的开关，即可实现能反折叠计算；

band.primitiveUVW : 超胞的晶格常数乘上UVW系数等于原胞的晶格矢量，用于控制能带反折叠的参数；

structure.as 文件参考如下：

Total number of atoms
4
Lattice
        3.7530000210         0.0000000000         0.0000000000
        0.0000000000         3.7530000210         0.0000000000
        0.0000000000         0.0000000000         3.7530000210
Direct
Au     0.000000000         0.000000000         0.000000000
Cu     0.000000000         0.500000000         0.500000000
Cu     0.500000000         0.000000000         0.500000000
Cu     0.500000000         0.500000000         0.000000000

2.22.2. run程序运行

准备好输入文件之后，将 scf.in 、bandunfolding.in 和 structure.as 文件上传到服务器上运行，按照结构弛豫中介绍的方法执行 DS-PAW scf.in ，自洽计算完成后执行 DS-PAW bandunfolding.in 。

2.22.3. analysis计算结果分析

根据上述的输入文件，计算完成之后将会得到 DS-PAW.log 、 band.json 、 log 这3个文件。

band.json ：计算完成之后的 json 数据文件，能带反折叠计算所得json文件与普通能带计算不同，会新增 UnfoldingBandInfo 部分，具体结构解析见输出文件格式说明部分。

使用 Device Studio 可直接对 band.json 文件处理出图，其操作步骤为：Simulator-->DS-PAW-->Analysis Plot，选择 band.json 即可，可根据作图要求自定义设置面板参数。

该例得到的能带图如下所示，与文献报道结果[3] 一致。

2.23. epsilon介电常数计算

本节将以Si体系为例，介绍在DS-PAW中如何进行介电常数计算。

2.23.1. \(Si\) 介电常数计算输入文件

输入文件包含参数文件 epsilon.in 和结构文件 structure.as ， epsilon.in 如下：

# task type
task = epsilon
#system related
sys.structure = structure.as
sys.symmetry = true
sys.functional = PBE
sys.spin = none

#scf related
cal.methods = 1
cal.smearing = 1
cal.ksamping = G
cal.kpoints = [5, 5, 5]
cal.cutoff = 500
scf.convergence = 1.0e-7

epsilon.in 输入参数介绍：

介电常数的计算可通过直接指定 task 完成，新增参数为下：

task = epsilon : 通过控制任务类型完成介电常数的计算；

备注

在 task = phonon 且 phonon.method = dfpt 时也可完成介电常数的计算，通过添加 phonon.dfptEpsilon = true 参数即可。

structure.as 文件参考如下：

Total number of atoms
8
Lattice
 5.43070000 0.00000000 0.00000000
 0.00000000 5.43070000 0.00000000
 0.00000000 0.00000000 5.43070000
Cartesian
Si 0.67883750 0.67883750 0.67883750
Si 3.39418750 3.39418750 0.67883750
Si 3.39418750 0.67883750 3.39418750
Si 0.67883750 3.39418750 3.39418750
Si 2.03651250 2.03651250 2.03651250
Si 4.75186250 4.75186250 2.03651250
Si 4.75186250 2.03651250 4.75186250
Si 2.03651250 4.75186250 4.75186250

2.23.2. run程序运行

准备好输入文件之后，将 epsilon.in 和 structure.as 文件上传到服务器上运行，按照结构弛豫中介绍的方法执行 DS-PAW epsilon.in 。

2.23.3. analysis计算结果分析

根据上述的输入文件，计算完成之后将会得到 DS-PAW.log 、 epsilon.json 、 epsilon.txt 这3个文件。

epsilon.json ：介电常数计算完成之后的 json 数据文件，介电常数、波恩有效电荷等数据会写入该文件，具体的数据结构详见 输出文件格式说明 部分；

epsilon.txt : 介电常数计算完成之后的 txt 文本文件，该文件写入介电常数相关数据，与 epsilon.json 文件数据一致，便于用户快速获取信息。

从 epsilon.txt 文件中可获取如下数据：

Total Part

13.309902

0.000000

-0.000000

-0.000000

13.309902

-0.000000

-0.000000

0.000000

13.309902

分析上表可得该体系的介电常数为 13.309902 ，与文献报道值[4] 13.31 一致。

2.24. piezo压电张量计算

本节将以AlN体系为例，介绍在DS-PAW中如何进行压电张量计算，得到材料的压电系数 \(e_{33} (0)\)。

2.24.1. \(AlN\) 压电张量计算输入文件

输入文件包含参数文件 piezo.in 和结构文件 structure.as ， piezo.in 如下：

task = epsilon
#system related
sys.structure = structure.as
sys.symmetry = true
sys.functional = PBE
sys.spin = none

#scf related
cal.methods = 1
cal.smearing = 1
cal.ksamping = G
cal.kpoints = [10, 10, 10]
cal.cutoffFactor = 1.5
scf.convergence = 1.0e-7

#outputs
io.charge = false
io.wave = false

piezo.in 输入参数介绍：

task : 本次计算为压电张量计算，设置task为epsilon；

scf.convergence : 介电张量计算建议提高电子收敛的精度，此处设置为1.0e-7；

structure.as 文件参考如下：

Total number of atoms
8
Lattice
 3.11606630 0.00000000 0.00000000
 0.00000000 5.39683518 0.00000000
 0.00000000 0.00000000 5.00770902
Cartesian
Al 0.00000000 3.59735137 0.00946380
Al 0.00000000 1.79945276 2.51320124
Al 1.55803315 0.89899597 0.00945662
Al 1.55803315 4.49786165 2.51308138
N 0.00000000 3.59851112 1.91845914
N 0.00000000 1.79831356 4.42266820
N 1.55803315 0.90013952 1.91851680
N 1.55803315 4.49672497 4.42258192

2.24.2. run程序运行

准备好输入文件之后，将 piezo.in 和 structure.as 文件上传到服务器上运行，按照结构弛豫中介绍的方法执行 DS-PAW piezo.in 。

2.24.3. analysis计算结果分析

根据上述的输入文件，计算完成之后将会得到 DS-PAW.log 、 epsilon.json 、 epsilon.txt 这3个文件。

epsilon.json ：介电常量计算完成之后的 json 数据文件；介电常数、压电张量矩阵、波恩有效电荷的数据被保存在 epsilon.json 中，具体的数据结构详见数据结构解析部分；

epsilon.txt : 压电计算完成之后的 txt 文本文件，该文件写入压电相关数据，与 epsilon.json 文件数据一致，便于用户快速获取信息。

从 epsilon.txt 文件中可获取如下数据：

Piezoelectric Tensor (C/m^2)( Row: x y z Column: XX YY ZZ XY YZ ZX)

Electronic Part

0.000000

0.000000

0.000000

0.000006

0.000000

0.336610

-0.000001

0.000007

0.000003

0.000000

0.336662

0.000000

0.266339

0.265888

-0.419569

0.000000

-0.000014

0.000000

Ionic Part:

-0.000004

0.000002

0.000002

0.000032

-0.000000

-0.681702

-0.000163

-0.000239

0.000314

-0.000000

-0.699012

-0.000000

-0.911456

-0.913265

1.943887

-0.000000

-0.000633

-0.000000

Total Part:

-0.000004

0.000002

0.000002

0.000039

-0.000000

-0.345092

-0.000164

-0.000232

0.000317

-0.000000

-0.362350

-0.000000

-0.645117

-0.647377

1.524318

-0.000000

-0.000647

-0.000000

分析上表可得压电张量电子贡献部分 \(e_{33} (0)\) 的数值为 -0.419569 \(C/m^{2}\) ，总的压电张量 \(e_{33}\) 的数值为 1.524318 \(C/m^{2}\) ，与文献参考值[5] -0.47 \(C/m^{2}\) 和 1.46 \(C/m^{2}\) 接近。

2.25. fixcell固定基矢弛豫计算

本节将以 \(MoS_{2}\) 体系为例，介绍在DS-PAW中如何进行固定晶格弛豫计算。

2.25.1. \(MoS_{2}\) 固定基矢弛豫计算输入文件

输入文件包含参数文件 relax.in 和结构文件 structure.as ， relax.in 如下：

# task type
task = relax
#system related
sys.structure = structure.as
sys.symmetry = false
sys.functional = PBE
sys.spin = none

#scf related
cal.methods = 1
cal.smearing = 1
cal.ksamping = G
cal.cutoff = 500
cal.kpoints = [19, 19, 5]
#relax related
relax.freedom = all
relax.convergence =  0.05
relax.methods = CG

structure.as 文件参考如下：

Total number of atoms
6
Lattice  Fix_x Fix_y Fix_z
3.19031572 0.00000000 0.00000000   F T T
-1.59515786 2.76289446 0.00000000  F F T
0.00000000 0.00000000 14.87900448  T T T
Cartesian
S 0.00000000 1.84193052 12.72413785
S 1.59515943 0.92096386 5.28463561
S 0.00000000 1.84193052 9.59436887
S 1.59515943 0.92096386 2.15486663
Mo 1.59515943 0.92096386 11.15925336
Mo 0.00000000 1.84193052 3.71975112

structure.as 标签设置介绍：

固定晶胞维度进行弛豫计算需在 structure.as 文件中新增固定标签，类似于固定原子弛豫的设置（在原子坐标后添加Fix标签），固定基矢需在 structure.as 的第三行 Lattice 后添加Fix标签，本案例的标签对应固定晶胞的c边和a边的y、z方向、b边的z方向。

2.25.2. run程序运行

准备好输入文件之后，将 relax.in 和 structure.as 文件上传到服务器上运行，按照结构弛豫中介绍的方法执行 DS-PAW relax.in 。

2.25.3. analysis计算结果分析

根据上述的输入文件，计算完成之后将会得到 DS-PAW.log 、 relax.json 这2个文件。

relax.json ：计算完成之后的 json 数据文件；

将 relax.json 拖入Device Studio查看结构，或直接查看 paw_tmp 目录下的relax.tmp 文件，可得弛豫结束后的结构数据如下：

Total number of atoms
6
Lattice
   3.19696732   0.00000000   0.00000000
  -1.59848077   2.76865753   0.00000000
   0.00000000   0.00000000  14.87900448
 Direct
 Mo   0.66666701   0.33333316   0.74999995
 Mo   0.33333340   0.66666675   0.24999997
 S   0.33333340   0.66666666   0.85535854
 S   0.66666686   0.33333303   0.35535875
 S   0.33333367   0.66666699   0.64464148
 S   0.66666708   0.33333333   0.14464130

通过对比可得弛豫前 a = b = 3.19031572 ，弛豫后变成了a = b = 3.19696732 ，而c = 14.87900448 不变。

2.26. thermal声子热力学性质计算

本节将以Si体系为例，介绍在DS-PAW中如何进行声子热力学性质计算。

2.26.1. \(Si\) 声子热力学性质计算输入文件

输入文件包含参数文件 phonon-thermal.in 和结构文件 structure.as ， phonon-thermal.in 如下：

# task type
task = phonon
#system related
sys.structure = structure.as
sys.symmetry = true
sys.functional = PBE
sys.spin = none

#scf related
cal.methods = 1
cal.smearing = 1
cal.ksamping = G
cal.kpoints = [5, 5, 5]
cal.cutoffFactor = 1.5
scf.convergence = 1.0e-7
#phonon related
phonon.structureSize = [2,2,2]
phonon.type =dos
phonon.qpoints = [31,31,31]
phonon.method = dfpt

phonon.thermal=true
phonon.thermalRange = [0,1000,10]

phonon-thermal.in 输入参数介绍：

phonon.thermal : 该参数为控制热力学计算的开关；

phonon.thermalRange : 该参数可指定热力学计算的温度范围及数据存储间隔；

structure.as 文件参考如下：

Total number of atoms
2
Lattice
0.00 2.75 2.75
2.75 0.00 2.75
2.75 2.75 0.00
Direct
Si -0.125000000 -0.125000000 -0.125000000
Si 0.125000000 0.125000000 0.125000000

2.26.2. run程序运行

准备好输入文件之后，将 phonon-thermal.in 和 structure.as 文件上传到服务器上运行，按照结构弛豫中介绍的方法执行 DS-PAW phonon-thermal.in 。

2.26.3. analysis计算结果分析

根据上述的输入文件，计算完成之后将会得到 DS-PAW.log 、 phonon.json 这2个文件。

phonon.json ：计算完成之后生成的json文件，打开热力学计算的开关，生成的 phonon.json 文件中会写入 ThermalInfo 数据，具体解析见输出文件格式说明部分。

使用 Device Studio 可直接对 phonon.json 文件处理出图，其操作步骤为：Simulator-->DS-PAW-->Analysis Plot，选择 phonon.json 即可，可根据作图要求自定义设置面板参数。

分析热力学数据，可得熵、热容、亥姆霍兹自由能随温度变化的曲线如下所示，与phonony git仓库展示的结果一致：https://phonopy.github.io/phonopy/examples#thermal-properties

2.27. solid state NEB计算

本节将以HfZrO体系为例，介绍在DS-PAW中如何放开晶胞弛豫进行solid state NEB计算。

2.27.1. \(HfZrO\) Solid state NEB计算输入文件

输入文件包含参数文件 ssneb.in 和结构文件 structure.as ， ssneb.in 如下：

task = neb

sys.structure = structure.as
sys.functional  = LDA
sys.spin = none
sys.symmetry = false

cal.ksamping = G
cal.kpoints = [10,10,10]
cal.cutoff = 500
cal.methods = 1
cal.smearing = 1
cal.sigma = 0.05

scf.mixType = Broyden
scf.mixBeta = 0.4
scf.convergence = 1e-6
scf.max = 300

neb.springK = 5
neb.images = 6
neb.iniFin = true
neb.method = QM2
neb.convergence = 0.01
neb.max = 500
neb.freedom = all

io.wave = false
io.charge = false

ssneb.in 输入参数介绍：

neb.freedom : 该参数控制过渡态弛豫的维度，设置为all对应弛豫晶胞大小；

neb.method : 该参数指定过渡态搜寻的方法，当弛豫晶胞大小时该参数仅限于QM2和FIRE;

structure.as 需提供多个，初态结构 structure00.as 参考如下

Total number of atoms
12
Lattice
 5.00209138 0.00000009 0.00000004
 0.00000009 5.00209143 -0.00000004
 0.00000004 -0.00000004 5.07896990
Cartesian
Hf 2.50104558 2.50104575 0.00000000
Hf 0.00000000 0.00000000 0.00000000
O 3.75156841 1.25052303 1.47285183
O 3.75156857 3.75156869 1.04735062
O 1.25052293 1.25052297 3.60611823
O 1.25052286 3.75156867 4.03161932
O 1.25052287 3.75156860 1.47285187
O 1.25052275 1.25052294 1.04735054
O 3.75156850 1.25052287 4.03161945
O 3.75156850 3.75156869 3.60611821
Zr 2.50104577 0.00000000 2.53948497
Zr 0.00000000 2.50104594 2.53948491

末态结构 structure07.as 参考如下

Total number of atoms
12
Lattice
 4.98221520 -0.00002552 0.00036684
 -0.00002562 4.99587652 0.00005905
 0.00039053 0.00006126 5.18258321
Cartesian
Hf 2.30823006 2.49975412 0.04967381
Hf 0.00919001 0.00195723 0.38722458
O 4.03365086 0.66419181 2.12958714
O 4.00001549 3.18954023 0.89210846
O 0.95871628 1.24120307 4.04442128
O 0.94984693 3.74053908 4.19050825
O 1.35895285 3.73907584 1.57483409
O 1.36804279 1.24264997 1.42944278
O 3.29999107 0.69159253 4.72728663
O 3.26626721 3.16200890 3.48972595
Zr 2.31915914 0.00841995 2.97686955
Zr 4.98082249 2.50639160 2.64290889

初末态构型在 Device Studio 中显示如下：

初态T相构型

末态F相构型

备注

在 neb.freedom = all 时， neb.method 只能设置为 QM2 或 FIRE

2.27.2. run程序运行

准备好输入文件之后，将 ssneb.in 和 structure.as 文件上传到服务器上运行，按照结构弛豫中介绍的方法执行 DS-PAW ssneb.in 。

2.27.3. analysis计算结果分析

根据上述的输入文件，计算完成之后将会得到 DS-PAW.log 、 neb.json 这2个文件。

neb.json ：过渡态计算完成之后的 json 数据文件；此时反应坐标及能量变化等数据被保存在 neb.json 中，具体的数据结构详见数据结构解析部分；

使用 Device Studio 可直接对 neb.json 文件处理出图，其操作步骤为：Simulator-->DS-PAW-->Analysis Plot，选择 neb.json 即可，可根据作图要求自定义设置面板参数。

得到的反应势垒曲线如下所示：

2.28. PBEsol泛函计算

本节将以 \(Ta_{2}O_{5}\) 体系为例，介绍在DS-PAW中如何使用PBEsol泛函进行弛豫计算。

2.28.1. \(Ta_{2}O_{5}\) PBEsol泛函计算输入文件

输入文件包含参数文件 relax.in 和结构文件 structure.as ， relax.in 如下：

task = relax

sys.structure = structure.as
sys.functional  = PBESOL
sys.spin = none
sys.symmetry = true

cal.ksamping = MP
cal.kpoints = [4,4,8]
cal.cutoff = 520
cal.smearing = 1
cal.sigma = 0.01

scf.convergence = 1e-5
scf.max = 60

relax.max = 60
relax.freedom = all
relax.convergence = 0.01
relax.methods = CG

relax.in 输入参数介绍：

sys.functional : 该参数控制使用泛函的类型，此例选择的泛函为PBESOL；

结构文件 structure.as 参考如下

Total number of atoms
14
Lattice
 6.25000000 0.00000000 0.00000000
 0.00000000 7.40000000 0.00000000
 0.00000000 0.00000000 3.83000000
Cartesian
O 0.00000000 0.00000000 0.00000000
O 3.12500000 3.70000000 0.00000000
O 2.43375000 1.03970000 0.00000000
O 3.81625000 6.36030000 0.00000000
O 0.69125000 4.73970000 0.00000000
O 5.55875000 2.66030000 0.00000000
O 1.25625000 2.56114000 1.91500000
O 4.99375000 4.83886000 1.91500000
O 1.86875000 6.26114000 1.91500000
O 4.38125000 1.13886000 1.91500000
Ta 1.40250000 2.82754000 0.00000000
Ta 4.84750000 4.57246000 0.00000000
Ta 1.72250000 6.52754000 0.00000000
Ta 4.52750000 0.87246000 0.00000000

2.28.2. run程序运行

准备好输入文件之后，将 relax.in 和 structure.as 文件上传到服务器上运行，按照结构弛豫中介绍的方法执行 DS-PAW relax.in 。

2.28.3. analysis计算结果分析

根据上述的输入文件，计算完成之后将会得到 DS-PAW.log 、 relax.json 这2个文件及paw_tmp文件夹。

relax.json ：弛豫计算结束得到的结构文件

将 relax.json 拖入Device Studio查看结构，或直接查看 paw_tmp 目录下的relax.tmp 文件，可得弛豫结束后晶胞常数如下表所示，与文献报道结果[6] 一致。

a (Å)

b (Å)

c (Å)

PBEsol - this work

6.190

7.315

3.786

PBEsol - ref

6.197

7.333

3.793

2.29. ref参考文献

[1] Rêgo C R C, Oliveira L N, Tereshchuk P, et al. Comparative study of van der Waals corrections to the bulk properties of graphite[J]. Journal of Physics: Condensed Matter, 2015, 27(41): 415502.

[2] Clima S, Wouters D J, Adelmann C, et al. Identification of the ferroelectric switching process and dopant-dependent switching properties in orthorhombic HfO2: A first principles insight[J]. Applied Physics Letters, 2014, 104(9): 092906.

[3] Chen M, Weinert M. Layer k-projection and unfolding electronic bands at interfaces[J]. Physical Review B, 2018, 98(24): 245421.

[4] Gajdoš M, Hummer K, Kresse G, et al. Linear optical properties in the projector-augmented wave methodology[J]. Physical Review B, 2006, 73(4): 045112.

[5] Bernardini F, Fiorentini V, Vanderbilt D. Spontaneous polarization and piezoelectric constants of III-V nitrides[J]. Physical Review B, 1997, 56(16): R10024.

[6] Valencia-Balvín C, Pérez-Walton S, Osorio-Guillén J M. First principles calculations of the electronic and dielectric properties of λ-Ta2O5[J]. TecnoLógicas, 2018, 21(43): 43-52.

[7] Haynes W M, Lide D R, Bruno T J. CRC handbook of chemistry and physics[M]. CRC press, 2016.

[8] Zhang Z, Guo Y, Robertson J. Role of the third metal oxide in In–Ga–Zn–O4 amorphous oxide semiconductors: Alternatives to gallium[J]. Journal of Applied Physics, 2020, 128(21): 215704.

3. 应用案例

本章将介绍DS-PAW的各种应用实例，具体包括：如何计算磁矩、如何计算反铁磁材料等；用户通过以下应用教程，将可以更深入了解DS-PAW软件的使用。

3.1. \(O\) 原子的磁矩计算

本节中我们将以单个氧原子体系为例来介绍磁性体系的计算。

3.1.1. \(O\) 原子自洽计算之文件准备

由于本次计算的是单个氧原子的磁矩，因此并不需要进行结构弛豫计算，我们直接从自洽计算开始，准备参数文件 scf.in 和结构文件 structure.as ， scf.in 如下：

task = scf
sys.symmetry = false
sys.structure = structure.as
sys.spin = collinear
cal.smearing = 1
cal.sigma = 0.01
cal.kpoints = [1, 1, 1]

本次计算的输入文件中以下几个参数需要重点关注：

sys.symmetry ：本次计算中我们将在关闭对称性的情况下进行计算，因为在DS-PAW中可以通过对称性来减少程序的计算量，但是往往通过对称性优化之后，一些较为细节的东西将会不是特别准确，因此本次计算中将关闭对称性；

sys.spin ：指定体系磁性，因为我们知道单个氧原子的磁矩是 2μB ，这里我们将设置体系的磁性为 collinear 也就是 共线自旋 ；

cal.kpoints ：在前面的章节中我们介绍过对于没有周期性的维度， K点 可以设置为1；

structure.as 文件参考如下：

Total number of atoms
1
Lattice
7.50000000 0.00000000 0.00000000
0.00000000 8.00000000 0.00000000
0.00000000 0.00000000 8.90000000
Cartesian
O  0.00000000 0.00000000 0.00000000

结构文件中我们使用笛卡尔坐标，因此我们设置第七行中坐标类型为 Cartesian ；为了使结构也尽量的减少对称性，手动晶格改为 [7.5，8，8.9] 格子。

3.1.2. run程序运行

准备好输入文件之后，将 scf.in 和 structure.as 文件上传到安装了DS-PAW的环境上，运行 DS-PAW scf.in 命令。

3.1.3. analysis计算结果分析

根据上述的输入文件，计算完成之后将会得到 DS-PAW.log 、 system.json 这2个文件。

使用文本编辑器或者在线显示 json 格式的网页中打开 system.json 文件，具体数据如下：

在 system.json 的 Eigenvalue - Spin - Occupation 部分可得向上自旋的电子占据数为4，向下自旋的电子占据数为2，同时在 MagInfo 部分可得整个体系带有两个 2μB 的磁矩。

3.2. \(NiO\) 体系的反铁磁计算

本节中我们将以NiO体系为例介绍如何设置计算反铁磁计算。

3.2.1. \(NiO\) 体系自洽计算

本次案例中同样省去了结构弛豫这个过程，用户重现此案例时，可以自行尝试下进行结构弛豫计算，准备参数文件 scf.in 和结构文件 structure.as ， scf.in 如下：

task = scf
sys.structure = structure.as
sys.spin = collinear
cal.smearing = 4
cal.kpoints = [8, 8, 8]
cal.cutoff = 500

本次计算的输入文件中以下几个参数需要重点关注：

cal.smearing ：本次计算中采用 四面体加布洛赫 的方法，当使用该方法时 sigma 将强制被设置为 0 ；

sys.spin ：指定体系磁性， NiO 为反铁磁材料因此我们需要设置磁性为 collinear 也就是 共线自旋 ；

cal.cutoff ：这里我们设置计算中平面波的截断为 500 ；

structure.as 文件参考如下：

Total number of atoms
4
Lattice
4.16840000 2.08420000 2.08420000
2.08420000 4.16840000 2.08420000
2.08420000 2.08420000 4.16840000
Cartesian Mag
Ni 1.04210000 1.04210000 1.04210000   2.0
Ni 5.21050000 5.21050000 5.21050000   -2.0
O 3.12630000 3.12630000 3.12630000    0
O 7.29470000 7.29470000 7.29470000    0

可以注意到，在结构文件的第七行的 Cartesian 后面加入 Mag 标签，设置了这个标签之后就可以设置每个原子的磁矩，由于我们需要体现反铁磁（整个体系不显示磁矩，单个原子有磁矩），我们建立了四个原子的晶胞，一个Ni原子设置磁矩为 -2 ，另一个Ni原子设置磁矩为 2 ，两个O原子设置磁矩为 0 。

备注

Mag 标签可设置体系中各原子的磁矩。线性自旋计算中添加每个原子的总磁矩即可；自旋轨道耦合计算中需添加x, y, z方向上的磁矩，添加标签为 Mag_x , Mag_y, Mag_z，在对应的原子坐标后添加三个方向上磁矩即可。以NiO体系为例，若进行自旋轨道耦合计算，磁矩设置应如下：

Total number of atoms
4
Lattice
4.16840000 2.08420000 2.08420000
2.08420000 4.16840000 2.08420000
2.08420000 2.08420000 4.16840000
Cartesian Mag_x Mag_y Mag_z
Ni 1.04210000 1.04210000 1.04210000   0.0 0.0 2.0
Ni 5.21050000 5.21050000 5.21050000   0.0 0.0 -2.0
O 3.12630000 3.12630000 3.12630000    0.0 0.0 0.0
O 7.29470000 7.29470000 7.29470000    0.0 0.0 0.0

3.2.2. run程序运行

准备好输入文件之后，将 scf.in 和 structure.as 文件上传到安装了DS-PAW的环境上，运行 DS-PAW scf.in 命令。

3.2.3. analysis自洽计算结果分析

根据上述的输入文件，计算完成之后将会得到 DS-PAW.log 、 system.json 这2个文件。在 system.json 中的 MagInfo 部分可得自洽完成之后总的磁矩为 1e-08 ，几乎为0。

3.2.4. \(NiO\) 体系态密度计算

之后准备进行态密度计算，准备参数文件 pdos.in 结构文件 structure.as 和自洽的二进制电荷密度文件 rho.bin ，此时 pdos.in 如下：

task = dos
sys.structure = structure.as
sys.spin = collinear
cal.iniCharge = ./rho.bin
cal.smearing = 4
cal.kpoints = [16, 16, 16]
cal.cutoff = 500
dos.range = [-10, 10]
dos.EfShift = true
dos.resolution = 0.05
dos.project = true

pdos.in 输入参数介绍：

dos.range ：表示能量计算区间为-10到10；

dos.EfShift ：表示能量计算区间是否按照自洽的费米能级平移，此例中dos的能量计算区间会在得到费米能级后进行平移；

dos.resolution ：表示在能量计算区间内打点的间隔精度。此例能量范围为20 eV，间隔精度为0.05，对应打点数为400；

dos.project ：控制态密度的投影计算，本次计算打开了态密度的投影。

3.2.5. run程序运行

将新建的 pdos.in 文件上传 NiO 的自洽文件夹上，运行 DS-PAW pdos.in 命令。

3.2.6. dos态密度计算结果分析

根据上述的输入文件，计算完成之后将会得到 DS-PAW.log 、 dos.json 这2个文件。使用python工具对 dos.json 进行数据处理画出NiO的t2g和eg轨道，具体操作见辅助工具使用教程，可得不加U得到的态密度图如下所示：

3.2.7. \(NiO\) 体系DFT+U的态密度计算

NiO体系DFT+U的态密度计算的计算流程与前面的NiO体系的态密度计算的流程一致，我们只需要在前面的NiO体系的自洽和态密度的计算中都加入DFT+U相关的参数即可：

#correction related
corr.dftu=true
corr.dftuElements =[Ni]
corr.dftuOrbital=[d]
corr.dftuU = [8]
corr.dftuJ = [0.95]

本次计算的输入文件中以下几个参数需要重点关注：

corr.dftu 设置是否打开DFT+U的开关，本例子中设置为true；

corr.dftuElements 设置需要加U的元素，本例中为Ni；

corr.dftuOrbital 设置需要加U的轨道，本例中设置为d轨道；

corr.dftuU 设置具体的U值，本例中设置为8；

corr.dftuJ 设置具体的J值，本例中设置为0.95；

自洽和态密度计算完成之后，得到DFT+U之后的态密度图如下：

备注

DFT+U可以设置多个元素对应轨道的U值，例如设置Ni的d轨道加U值为8，J值为0.95；O的p轨道加U值为1，J值为0，此时设置如下：corr.dftuElements =[Ni,O] corr.dftuOrbital=[d,p] corr.dftuU = [8,1] corr.dftuJ = [0.95,0]。

3.3. \(AuAl\) slab模型功函数计算

本节中我们将以Au和Al的异质结体系为例介绍如何进行功函数计算。

3.3.1. \(AuAl\) slab模型自洽计算之文件准备

本次案例中同样省去了结构弛豫这个过程，用户重现此案例时，可以自行尝试下进行结构弛豫计算，准备参数文件 scf.in 和结构文件 structure.as ， scf.in 如下：

task = scf
sys.structure = structure.as
sys.spin = collinear
cal.smearing = 4
cal.kpoints = [8, 8, 1]
cal.cutoff = 400

io.potential=true
potential.type = hartree

#correction related
corr.dipol = true
corr.dipolDirection = c

本次计算的输入文件中以下几个参数需要重点关注：

io.potential 为自洽中计算势函数的开关；

potential.type 控制势函数保存的类型，计算功函数的时候需要静电势的数据，这里我们设置potential.type = hartree；

corr.dipol 为偶极修正的开关；本例中设置为true；

corr.dipolDirection 本例中设置偶极修正的方向为晶格矢量的c方向。

structure.as文件参考如下：

Total number of atoms
8
Lattice
 4.06384898 0.00000000 0.00000000
 0.00000000 4.06384898 0.00000000
 0.00000000 0.00000000 20.00000000
Cartesian
Au 1.01596223 1.01596223 0.00000000
Au 3.04788672 3.04788672 0.00000000
Au 3.04788672 1.01596224 2.03914999
Au 1.01596224 3.04788672 2.03914999
Al 1.01596224 1.01596224 4.07109999
Al 3.04788673 3.04788673 4.07109999
Al 3.04788673 1.01596224 6.09585000
Al 1.01596224 3.04788673 6.09585000

3.3.2. run程序运行

准备好输入文件之后，将 scf.in 和 structure.as 文件上传到安装了DS-PAW的环境上，运行DS-PAW scf.in命令。

3.3.3. workfunction功函数数据分析

根据上述的输入文件，计算完成之后将会得到 DS-PAW.log 、 system.json 、 potential.json 等多个文件。我们将对 potential.json 文件进行数据处理既可以得到功函数。

使用 Device Studio 可直接对 potential.json 文件处理出图，其操作步骤为：Simulator-->DS-PAW-->Analysis Plot，选择 potential.json 即可，可根据作图要求自定义设置面板参数。DS处理得到的势函数曲线如下所示：

通过势函数的面内平均图，我们可以得到Au和Al的真空电势分别为5.5 ev 和 4.6 eV

从system.json中读取费米能级为 0.113 eV

根据公式 \(w = -eϕ - E_{F}\) 得到Au和Al构成异质结之后，Au的功函数为 5.387 eV，Al的功函数为 4.487 eV。文献参考值[7]：Au的功函数在 5.10-5.47 eV区间，Al的功函数在 4.06-4.26 eV区间。

4. 赝势说明

DS-PAW目前可支持 .paw 、 .potcar 、 .pawpsp 3种格式的赝势使用，用户可通过参数 sys.pseudoType 指定使用赝势的类型。

4.1. hzw内部paw赝势

DS-PAW默认使用的是 hzw 赝势（.paw），对应参数 sys.pseudoType 为 -1 ，此时DS-PAW会从安装路径 /pseudopotential 读取赝势文件，目前 hzw 赝势库包含元素共72种，为元素周期表中 1-86 号元素（镧系元素目前只支持元素镧）。

关于 hzw 赝势的准确性说明：快速入门与应用案例从多个功能出发进行计算，其计算结果与文献都能很好的吻合，这验证了 hzw 赝势在各个功能计算中都能展现较高的准确性。

此外，针对赝势库中的 72 种元素所对应的单质，另进行了 状态方程拟合获取稳态晶胞体积 的计算，测试对象包括 72 种元素对应LDA和PBE泛函赝势，共计 144 个赝势文件。测试所得体积与量子化学软件 WIEN2k 计算所得结果进行比较，两者计算误差在元素周期表中展示如下：

WIEN2k 数据来源 ：https://github.com/abinit/pseudo_dojo 因WIEN2k网站未提供La、At计算数据，上表未展示La、At对比数据

通过对比可得，状态方程拟合得到稳态体积与 WIEN2k 软件结果基本一致，其中误差最大的为元素Zn，对应的LDA和PBE赝势的误差分别为 2.58% 和 3.31% ，对这两种元素的赝势优化正在进行中。其余元素的误差基本控制在 0.1% 以内 ，该测试进一步验证了赝势库的整体准确性。

4.2. VASP赝势

DS-PAW提供了外部potcar格式赝势（.potcar）的使用接口，对应参数 sys.pseudoType 为 10 ，此时DS-PAW会从默认路径 ./ 读取赝势文件。由于版权限制，DS-PAW只提供VASP赝势的使用接口，赝势文件需用户自行准备。在使用时需要用户把赝势文件名做相应的修改，如果使用硅元素的LDA赝势，对应的POTCAR需要改成 Si_LDA.potcar，放置到指定目录（可以通过sys.pseudoPath设置）。

4.3. gbrv赝势

DS-PAW提供了外部gbrv格式赝势（.pawpsp）的使用接口，对应参数 sys.pseudoType 为 11 ，此时DS-PAW会从默认路径 ./ 读取赝势文件。gbrv赝势是一套可以免费使用的赝势库，总共提供64种元素的赝势文件，获取网站 http://www.physics.rutgers.edu/gbrv/，下载时需要注意，DS-PAW支持的格式是 PAW format for Abinit。 在使用时需要用户把赝势文件名做相应的修改，如果使用硅元素的LDA赝势，对应的赝势文件需要改成 Si_LDA.pawpsp，放置到指定目录（可以通过sys.pseudoPath设置）。

4.4. compare赝势对比

4.4.1. \(Si\) 体系能带计算

为对比三种赝势的计算结果，本节以Si体系为例，分别使用以上三种赝势进行了能带计算，下图为能带对比图，该对比图说明三种赝势在描述Si的能带时，体系出较高的一致性，验证了hzw赝势的准确性。

数据来源：该图计算结果由鸿之微合作者提供

4.4.2. multi多体系带隙计算

本节以多个体系为例，使用 DS-PAW 对这些体系进行HSE06能带计算，并得到了多个体系的带隙值，将 DS-PAW 计算得到的带隙值与文献提供的 VASP 及 RESCU 软件的计算数据进行对比，得到下图，该图进一步验证了hzw赝势的准确性。

数据来源 ：https://doi.org/10.1103/PhysRevB.97.075139

5. 参数说明

5.1. parameter参数列表

task

sys.pseudoType

sys.pseudoPath

sys.structure

sys.symmetry

sys.symmetryAccuracy

sys.functional

sys.spin

sys.soi

sys.electron

sys.hybrid

sys.hybridType

sys.hybridAlpha

sys.hybridOmega

cal.iniCharge

cal.iniWave

cal.cutoffFactor

cal.cutoff

cal.methods

cal.smearing

cal.sigma

cal.kpoints

cal.ksamping

cal.toalBands

io.charge

io.elf

io.potential

io.wave

io.band

io.dos

io.optical

io.bader

io.polarization

io.magProject

io.outStep

scf.max

scf.min

scf.mixBeta

scf.mixType

scf.convergence

relax.max

relax.freedom

relax.methods

relax.convergenceType

relax.convergence

relax.stepRange

dos.range

dos.resolution

dos.project

dos.EfShift

band.kpointsLabel

band.kpointsCoord

band.kpointsNumber

band.project

band.unfolding

band.primitiveUVW

potential.type

corr.chargedSystem

corr.dipol

corr.dipolDirection

corr.dftu

corr.dftuElements

corr.dftuOrbital

corr.dftuU

corr.dftuJ

corr.VDW

corr.VDWType

corr.dipolEfield

corr.dipolPosition

pcharge.bandIndex

pcharge.kpointsIndex

pcharge.sumK

neb.springK

neb.images

neb.iniFin

neb.method

neb.convergenceType

neb.convergence

neb.stepRange

neb.max

neb.freedom

frequency.dispOrder

frequency.dispRange

phonon.structureSize

phonon.method

phonon.type

phonon.isDisplacement

phonon.fdDisplacement

phonon.iniPhonon

phonon.qsamping

phonon.qpoints

phonon.qpointsLabel

phonon.qpointsCoord

phonon.qpointsNumber

phonon.primitiveUVW

phonon.dosRange

phonon.dosResolution

phonon.dosSigma

phonon.dfptEpsilon

phonon.nac

phonon.thermal

phonon.thermalRange

elastic.dispOrder

elastic.dispRange

aimd.ensemble

aimd.thermostat

aimd.iniTemp

aimd.finTemp

aimd.timeStep

aimd.totalSteps

5.2. detail参数详细描述

参数名称: task

默认值: 无

可选值: scf/relax/dos/band/potential/elf/pcharge/neb/frequency/phonon/elastic/aimd/epsilon/

描述： task 参数表示计算的类型，必须设置； scf/relax 可以是从头计算（不需要设置 cal.iniCharge 和 cal.iniWave ）也可以导入电荷密度或波函数（设置 cal.iniCharge 和 cal.iniWave ）； dos/band/potential/elf 为后处理计算，必须要读取电荷密度，在导入电荷密度的同时可选择性的导入波函数（必须设置 cal.iniCharge ，选择性设置 cal.iniWave ）；当 task=scf/realx 时，默认输出 system.json ；当 task=dos/band/potential/elf/pcharge 时，默认输出对应的json文件 dos.json/band.json/potential.json/elf.json/pcharge.json ; task=neb/frequency/phonon/elastic/aimd/epsilon 分别对应过渡态/频率/声子/弹性/分子动力学/介电常数计算，默认输出对应的json文件 neb.json/frequency.json/phonon.json/elastic.json/aimd.json/epsilon.json；

案例: task = scf

参数名称: sys.pseudoType

默认值: -1

可选值: -1/10/11

描述： sys.pseudoType 参数为设置 DS-PAW 计算所需的赝势格式；-1表示使用hzw赝势（.paw），目前DS-PAW支持 **H He Li Be B C N O F Ne Na Mg Al Si P S Cl Ar K Ca Sc Ti V Cr Mn Fe Co Ni Cu Zn Ga Ge As Se Br Kr Rb Sr Y Zr Nb Mo Tc Ru Rh Pd Ag Cd In Sn Sb Te I Xe Cs Ba La Hf Ta W Re Os Ir Pt Au Hg Tl Pb Bi Po At Rn* 72种元素的hzw赝势； 10表示外部potcar格式赝势(.potcar), 11表示外部pawpsp格式赝势(.pawpsp)；

案例: sys.pseudoType = -1

参数名称: sys.pseudoPath

默认值: 当 sys.pseudoType =-1时，无需设置该参数，程序只能从安装路径 /pseudopotential 读取赝势文件 ；sys.pseudoType = 10，默认值 ./ ；sys.pseudoType = 11，默认值 ./ ；

描述： sys.pseudoPath 参数为设置 DS-PAW 计算所需的赝势所在路径；一般无需自行设置，读取hzw赝势时会从默认存储路径读取，读取外部赝势时会默认从当前路径读取；

案例: sys.pseudoPath = ./

参数名称: sys.structure

默认值: atoms.as

可选值: XXX.as /XXX.json

描述： sys.structure 参数设置结构文件的路径，结构文件可以是.as格式或.json格式，支持绝对路径和相对路径；使用DS-PAW进行结构弛豫之后会生成 relax.json 文件，可以直接设置sys.structure为 relax.json 即可读取结构弛豫的文件进行计算；

案例: sys.structure = structure.as

参数名称: sys.symmetry

默认值: true

可选值: true/false

描述： sys.symmetry 该参数表示DS-PAW计算时是否进行对称性分析；

案例: sys.symmetry = false

参数名称: sys.symmetryAccuracy

默认值: 1.0e-5

可选值: real

描述： sys.symmetryAccuracy 该参数表示DS-PAW计算时对称性分析的精度；

案例: sys.symmetryAccuracy = 1.0e-6

参数名称: sys.functional

默认值: LDA

可选值: LDA/PBE/REVPBE/RPBE/PBESOL/vdw-optPBE/vdw-optB88/vdw-optB86b/vdw-DF/vdw-revPBE/vdw-DF2/vdw-revDF2

描述： sys.functional 参数指定DS-PAW的泛函类型，如果 sys.functional=LDA 则会去读取指定路径下的LDA赝势；vdw开头的系列赝势对应泛函类的范德瓦尔斯校正方法；

案例: sys.functional = PBESOL

参数名称: sys.spin

默认值: none

可选值: none/collinear/non-collinear

描述： sys.spin 参数指定计算的自旋性质； none 表示没有自旋， collinear 表示共线自旋， non-collinear 表示一般自旋；

案例: sys.spin = collinear

参数名称: sys.soi

默认值： false

可选值： true/false

描述： sys.soi 表示是否考虑自旋轨道耦合效应；自旋轨道耦合效应需要在sys.spin=non-collinear时才会生效；

案例： sys.soi = true

参数名称: sys.electron

默认值： 所有价电子的总和

可选值： real

描述： sys.electron 参数指定价电子的总数；DS-PAW通过引入背景电荷的方法计算带电体系；

案例： sys.electron = 12

参数名称: sys.hybrid

默认值： false

可选值： true/false

描述： sys.hybrid 参数指定是否使用杂化泛函；true表示引入杂化泛函，false表示不引入杂化泛函；

案例： sys.hybrid = true

参数名称: sys.hybridType

默认值： HSE06

可选值： PBE0/HSE03/HSE06/B3LYP

描述： sys.hybridType 参数指定杂化泛函的类型；该参数只有在sys.hybrid = true时生效；

案例： sys.hybridType = HSE06

参数名称: sys.hybridAlpha

默认值： 当 sys.hybridType = PBE0 时，默认值为 0.25 ，当 sys.hybridType = HSE06 时，默认值为 0.25 ，当 sys.hybridType = HSE03 时，默认值为 0.25

可选值： real

描述： sys.hybridAlpha 参数指定杂化泛函中精确的交换相关泛函的系数；该参数只有在sys.hybrid = true时生效；

案例： sys.hybridAlpha = 0.20

参数名称: sys.hybridOmega

默认值： 当 sys.hybridType = PBE0 时，默认值为 0 ，当 sys.hybridType = HSE06 时，默认值为 0.2 ，当 sys.hybridType = HSE03 时，默认值为 0.3

可选值： real

描述： sys.hybridOmega 参数指定杂化泛函的屏蔽系数；该参数只有在sys.hybrid = true时生效；

案例： sys.hybridOmega = 0.2

参数名称: cal.iniCharge

默认值: 无

可选值: 指定rho.bin文件路径

描述： cal.iniCharge 参数表示用户可以通过指定DS-PAW自洽或结构弛豫计算得到的电荷密度文件 rho.bin 的路径进行后续的计算； task=scf/relax 时，如果不需要读取上一次的电荷密度时则不设置 cal.iniCharge ，如果需要如果读取上一次的电荷密度时则设置cal.iniCharge；当task= dos/band/potential/elf时必须设置 cal.iniCharge 指定 rho.bin 的路径；文件路径支持相对路径和绝对路径；

案例: cal.iniCharge = /home/exp/rho.bin

参数名称: cal.iniWave

默认值: 无

可选值: 指定wave.bin文件路径

描述： cal.iniWave 参数表示用户可以通过指定DS-PAW自洽或结构弛豫计算得到的波函数文件 wave.bin 的路径进行后续的计算；不设置此参数则表示不读取 wave.bin ；文件路径支持相对路径和绝对路径；

案例: cal.iniWave = /home/exp/wave.bin

参数名称: cal.cutoffFactor

默认值: 1.0

可选值: real

描述： cal.cutoffFactor 表示截断能参数cal.cutoff的系数，当 cal.cutoffFactor=1.5 时，DS-PAW计算时使用的截断能为cal.cutoff*1.5。DS-PAW2022A版本内部赝势皆已完成测试，cutoffFactor设置默认值1.0已能满足大多计算要求；

案例: cal.cutoffFactor = 1.0

参数名称: cal.cutoff

默认值: 当前计算所用的元素赝势中截断能的最大值；

可选值: real

描述： cal.cutoff 参数表示DS-PAW软件计算时候使用的平面波基矢的截断能，可在安装路径 /pseudopotential 查看各赝势文件内置截断能ecutoff的大小，如从O_PBE.paw文件可读出O_PBE的ecutoff为650 eV。

案例: cal.cutoff = 650

参数名称: cal.methods

默认值: 1

可选值: 1/2/3/4/5

描述： cal.methods 表示自洽电子部分优化的方法，1表示 BD(block Davidson) 方法；2表示 RM(residual minimization) 方法； 3表示 RM(residual minimization) 方法和 BD(block Davidson) 方法的组合；4表示 damped MD (阻尼分子动力学)方法；5表示 conjugated gradient (共轭梯度方法)；其中4和5可以在杂化泛函中使用；

案例: cal.methods = 1

参数名称: cal.smearing

默认值: 1

可选值: 1/2/3/4

描述： cal.smearing 表示用何种方法来设置每个波函数的部分占有数Gaussian smearing/Fermi-smearing/Methfessel-Paxton order 1/tetrahedron method with Blochl corrections；

案例: cal.smearing = 2

参数名称: cal.sigma

默认值: 0.2

可选值: real

描述： cal.sigma 表示使用有限温度方法设置部分占有数时的展宽；

案例: cal.sigma = 0.01

参数名称: cal.kpoints

默认值: [1,1,1]

可选值: 3*1 int array

描述： cal.kpoints 表示DS-PAW设置布里渊区k点网格取样大小；

案例: cal.kpoints = [9,9,9]

参数名称: cal.ksamping

默认值: MP

可选值: MP/G

描述： cal.ksamping 表示DS-PAW自动生成布里渊区k点网格的方法， Monkhorst-Pack 方法/ Gamma centered 方法；

案例: cal.ksamping = G

参数名称: cal.totalBands

默认值: 与体系价电子数目相关

可选值: int

描述： cal.totalBands 表示DS-PAW计算中所包含的总能带数目；

案例: cal.totalBands = 100

参数名称: io.charge

默认值: true

可选值: true/false

描述： 输出电荷密度的二进制文件 rho.bin 和 rho.json文件 ；当io.charge=true时，生成 rho.bin 和 rho.json文件 ；当task=scf/realx时该参数可以选择 true/false ；当task= dos/band/potential/elf时，io.charge强制为 false ；

案例: io.charge = true

参数名称: io.elf

默认值: false

可选值: false/true

描述： 输出ELF的数据结果；当task=scf/realx时该参数可以选择 true/false ；当task= dos/band/potential时，io.elf强制为 false ；当task=elf时，io.elf强制为 true ；

案例: io.elf = true

参数名称: io.potential

默认值: false

可选值: false/true

描述： 输出势函数的数据结果；当task=scf/realx时该参数可以选择 true/false ；当task= dos/band/elf时，io.potential强制为 false ；当task=potential时，io.potential强制为 true ；当io.potential=true时，可以选择 potential.type 来设置输出势函数的类型；

案例: io.potential = true

参数名称: io.wave

默认值: false

可选值: false/true

描述： 输出波函数的二进制文件 wave.bin ；当io.wave=true时，生成 wave.bin 文件；当task=scf/realx时该参数可以选择 true/false ；当task= dos/band/potential/elf时，io.wave强制为 false ；

案例: io.wave = true

参数名称: io.band

默认值: false

可选值: false/true

描述： 在task=scf时是否直接计算能带的开关；当io.band=true时，所有能带计算参数都生效；

案例: io.band = true

参数名称: io.dos

默认值: false

可选值: false/true

描述： 在task=scf时是否直接计算态密度的开关；当io.dos=true时，所有态密度计算参数都生效；

案例: io.dos = true

参数名称: io.optical

默认值: false

可选值: false/true

描述： 输出光学性质计算文件optical.json；当io.optical=true时，生成optical.json文件；当task=scf时该参数可以选择true/false；

案例: io.optical = true

参数名称: io.bader

默认值: false

可选值: false/true

描述： 输出bader电荷文件bader.json；当io.bader=true时，生成bader.json文件；当task=scf时该参数可以选择true/false；

案例: io.bader = true

参数名称: io.polarization

默认值: false

可选值: false/true

描述： 输出铁电极化文件polarization.json；当io.polarization=true时，生成polarization.json文件；当task=scf时该参数可以选择true/false；

案例: io.polarization = true

参数名称: io.magProject

默认值: false

可选值: false/true

描述： 在磁矩计算中，控制在system.json文件中是否写入磁矩信息；

案例: io.magProject = true

参数名称: io.outStep

默认值: task = relax/neb 时默认值为1，task = aimd 时默认值为20

可选值: int

描述： 控制在结构弛豫计算、过渡态计算、分子动力学模拟计算中，多少个离子步在对应的paw_tmp/relax.tmp、paw_tmp/neb.tmp、paw_tmp/aimd.tmp文件中写一次结构信息；

案例: io.outStep = 50

参数名称: scf.max

默认值: 60

可选值: int

描述： scf.max 表示DS-PAW自洽计算时电子步的最大步数；

案例: scf.max = 100

参数名称: scf.min

默认值: 2

可选值: int

描述： scf.min 表示DS-PAW自洽计算时电子步的最少步数；

案例: scf.min = 5

参数名称: scf.mixBeta

默认值: 0.4

可选值: real

描述： scf.mixBeta 表示DS-PAW自洽计算时电子混合算法的Beta值；

案例: scf.mixBeta = 0.2

参数名称: scf.mixType

默认值: Broyden

可选值: Broyden/Kerker

描述： scf.mixType 表示DS-PAW自洽计算时电子混合算法的类型，目前支持 Broyden方法 和 Kerker方法 ；

案例: scf.mixType = Broyden

参数名称: scf.convergence

默认值: 1.0e-4

可选值: real

描述： scf.convergence 表示DS-PAW自洽计算时，能量的收敛判据；

案例: scf.convergence = 1.0e-5

参数名称: relax.max

默认值: 60

可选值: int

描述： relax.max 表示DS-PAW结构驰豫时，最大的离子步步数；

案例: relax.max = 300

参数名称: relax.freedom

默认值: atom

可选值: atom/all/volume

描述： relax.freedom 表示DS-PAW结构驰豫的自由度，atom表示只弛豫原子; all表示弛豫晶格常数和原子; volume表示只弛豫晶格；

案例: relax.freedom = atom

参数名称: relax.methods

默认值: CG

可选值: CG/DMD/QN

描述： relax.methods 表示DS-PAW结构驰豫的方法，CG表示共轭梯度法; DMD表示阻尼分子动力学法; QN表示准牛顿方法；

案例: relax.methods = CG

参数名称: relax.convergenceType

默认值: force

可选值: force/energy

描述： relax.convergenceType 表示弛豫计算中收敛标准的选择，可以选择受力或以能量为收敛标准；

案例: relax.convergenceType = energy

参数名称: relax.convergence

默认值: 0.05/1e-4

可选值: real

描述： relax.convergence 表示DS-PAW结构驰豫时，原子受力或能量的收敛判据；选择力为收敛标准时默认值为0.05，选择能量为收敛标准时默认值为1e-4；

案例: relax.convergence = 0.01

参数名称: relax.stepRange

默认值: 0.5

可选值: real

描述： relax.stepRange 表示结构驰豫时，结构驰豫的中的缩放常数；

案例: relax.stepRange = 0.2

参数名称: dos.range

默认值: [-10,10]

可选值: 2*1 array

描述： dos.range 表示当task=dos时，态密度计算能量的区间；

案例: dos.range = [-15,15]

参数名称: dos.resolution

默认值: 0.05

可选值: real

描述： dos.resolution 表示当task=dos时，态密度计算能量间隔精度；

案例: dos.resolution = 0.1

参数名称: dos.project

默认值: false

可选值: false/true

描述： dos.project 参数控制着投影态密度；当task=dos时,dos.project为 false/true ；若打开投影，dos.project= ture , 此时 dos.json 中将会保存投影态密度的信息；若不打开投影，dos.project = false ；

案例: dos.project = true

参数名称: dos.EfShift

默认值: false

可选值: false/true

描述： dos.EfShift 参数表示 dos.range 的两个能量是否按照自洽的费米能级平移；当dos.EfShift=fasle，则 dos.range 的能量不按照费米能级平移；当dos.EfShift=true，则 dos.range 的能量按照费米能级平移；

案例: dos.EfShift = true

参数名称: band.kpointsLabel

默认值: 无

可选值: n*1 string array

描述： 该参数只有在task=band时才能生效； band.kpointsLabel 为能带计算时高对称点标签, band.kpointsLabel数据大小是band.kpointsCoord 数据大小的 1/3 ；比band.kpointsNumber数据大小多 1 ；

案例: band.kpointsLabel = [G,M,K,G]

参数名称: band.kpointsCoord

默认值: 无

可选值: 3n*1 real array

描述： 该参数只有在task=band时才能生效； band.kpointsCoord 为能带计算时高对称点的分数坐标, band.kpointsCoord 数据大小是band.kpointsLabel数据大小的 3倍 ；

案例: band.kpointsCoord = [0, 0, 0, 0.5, 0.5, 0.5, 0, 0, 0.5, 0, 0, 0]

参数名称: band.kpointsNumber

默认值: 无

可选值: (n-1)*1 int array

描述： 该参数只有在task=band时才能生效； band.kpointsNumber 为能带每相邻两个高对称点的间隔， band.kpointsNumber 比 band.kpointsLabel 数据大小少 1 ；

案例: band.kpointsNumber = [5, 5, 5]

参数名称: band.project

默认值: false

可选值: false/true

描述： band.project 参数控制着投影能带；当task= band 时, band.project为 false/true ；若打开投影，band.project= ture , 此时 band.json 中将会保存投影态密度的信息；若不打开投影，band.project = false ；

案例: band.project = true

参数名称: band.unfolding

默认值: false

可选值: false/true

描述： band.unfolding 参数是能带去折叠的开关；当task= band 时, band.unfolding生效（io.band = true不生效），若设置band.unfolding= ture , 此时 band.json 中将会保存反折叠能带数据 ；

案例: task = band, band.unfolding = true

参数名称: band.primitiveUVW

默认值: 无

可选值: 9*1 real array

描述： band.primitiveUVW 能带去折叠计算时，超胞的晶格常数乘上UVW系数等于原胞的晶格矢量；

案例: band.primitiveUVW = [0.0, 0.5, 0.5, 0.5, 0.0, 0.5, 0.5, 0.5, 0.0]

参数名称: potential.type

默认值: total

可选值: total/hartree/all

描述： potential.type 只在task=scf/realx且io.potential=true、或task=potential时生效；当potential.type为hartree时， potental.json 中输出静电势，当为total时，potental.json中输出总的局域势即离子势、静电势和交换关联势的和，当为all时， potental.json 中同时输出两个势；

案例: potential.type = all

参数名称: corr.chargedSystem

默认值: false

可选值: false/true

描述： corr.chargedSystem 表示当计算带电体系时，可以设置该参数修正带电块体体系的能量；

案例: corr.chargedSystem = true

参数名称: corr.dipol

默认值: false

可选值: false/true

描述： corr.dipol 表示引入人为的势场(偶极修正)来修正真空电势不平整的问题；

案例: corr.dipol = true

参数名称: corr.dipolDirection

默认值: 无

可选值: a/b/c

描述： corr.dipolDirection 表示偶极修正的方向，a/b/c分别表示三个晶格常数的方向；

案例: corr.dipolDirection = c

参数名称: corr.dipolPosition

默认值: 无

可选值: 3*1 real array

描述： corr.dipolPosition 表示偶极子在晶胞的相对位置；

案例: corr.dipolPosition = [0.5, 0.5, 0.5]

参数名称: corr.dipolEfield

默认值: 0

可选值: real

描述： corr.dipolEfield 表示外加电场的大小，单位为eV/Å，该参数只在 corr.dipol = true 和设置 corr.dipolDirection 的情况下生效；

案例: corr.dipolEfield = 0.05

参数名称: corr.dftu

默认值: false

可选值: false/true

描述： corr.dftu 表示是否引入hubbard U来处理强关联体系；

案例: corr.dftu = true

参数名称: corr.dftuElements

默认值: 无

可选值: n*1 string array

描述： corr.dftuElements 表示设置需要加U的元素；

案例: corr.dftuElements = [Ni,O]

参数名称: corr.dftuOrbital

默认值: 无

可选值: n*1 string array

描述： corr.dftuOrbital 表示设置选中元素上需要加U的轨道；

案例: corr.dftuOrbital = [d,s]

参数名称: corr.dftuU

默认值: 无

可选值: n*1 real array

描述： corr.dftuU 表示设置选中元素选中轨道上需要加U值的大小；

案例: corr.dftuU = [8,1]

参数名称: corr.dftuJ

默认值: 无

可选值: n*1 real array

描述： corr.dftuJ 表示设置选中元素选中轨道上需要加J值的大小；

案例: corr.dftuJ = [0.95,0]

参数名称: corr.VDW

默认值: false

可选值: false/true

描述： corr.VDW 表示是否引入范德瓦尔斯修正；

案例: corr.VDW = true

参数名称: corr.VDWType

默认值: D2G

可选值: D2G/D3G/D3BJ

描述： corr.VDWType 表示使用哪种范德瓦尔斯修正，D2G表示DFT-D2 of Grimme方法; D3G表示DFT-D3 of Grimme方法; D3BJ表示DFT-D3 with Becke-Jonson damping方法；

案例: corr.VDWType = D3G

参数名称: pcharge.bandIndex

默认值: 无

可选值: n*1 int array

描述： pcharge.bandIndex 表示部分电荷密度计算时能带的序号；

案例: pcharge.bandIndex = [1,3,4]

参数名称: pcharge.kpointsIndex

默认值: 无

可选值: n*1 int array

描述： pcharge.kpointsIndex 表示部分电荷密度计算时K点的序号；

案例: pcharge.kpointsIndex = [12,14]

参数名称: pcharge.sumK

默认值: false

可选值: false/true

描述： pcharge.sumK 表示计算部分电荷密度之后保存数据是否将所有K点，不同能带的数据相加；

案例: pcharge.sumK = true

参数名称: neb.springK

默认值: 5

可选值: real

描述： neb.springK 表示过渡态计算中弹簧系数K；

案例: neb.springK = 7

参数名称: neb.images

默认值: 无

可选值: int

描述： neb.images 表示过渡态计算中的中间结构的数目；

案例: neb.images = 5

参数名称: neb.iniFin

默认值: false

可选值: true/false

描述： neb.iniFin 表示过渡态计算中初态结构和末态结构是否进行自洽计算，true表示进行自洽计算；

案例: neb.iniFin = true

参数名称: neb.method

默认值: QN

可选值: LBFGS/CG/QM/QN/QM2/FIRE

描述： neb.method 表示过渡态计算中使用的算法；

案例: neb.method = QN

参数名称: neb.freedom

默认值: atom

可选值: atom/all

描述： neb.freedom 表示过渡态计算中弛豫的自由度，可以选择只弛豫原子，也可放开晶胞进行弛豫；

案例: neb.freedom = all

参数名称: neb.convergenceType

默认值: force

可选值: force/energy

描述： neb.convergenceType 表示过渡态计算中收敛标准的选择，可以选择受力或以能量为收敛标准；

案例: neb.convergenceType = energy

参数名称: neb.convergence

默认值: 0.1/1e-4

可选值: real

描述： neb.convergence 表示过渡态计算中受力或能量的收敛标准；选择力为收敛标准时默认值为0.1，选择能量为收敛标准时默认值为1e-4；

案例: neb.convergence = 0.01

参数名称: neb.stepRange

默认值: 0.1

可选值: int

描述： neb.stepRange 表示过渡态计算中结构弛豫的步长；

案例: neb.stepRange = 0.01

参数名称: neb.max

默认值: 60

可选值: int

描述： neb.max 表示过渡态计算中结构弛豫的最大步数；

案例: neb.max = 300

参数名称: frequency.dispOrder

默认值: 1

可选值: 1/2

描述： frequency.dispOrder 表示频率计算时原子振动的方式，1对应中心差分法，有两种振动方式，2对应四种振动方式；

案例: frequency.dispOrder = 2

参数名称: frequency.dispRange

默认值: 0.01

可选值: real

描述： frequency.dispRange 表示频率计算时的原子位移；

案例: frequency.dispRange = 0.05

参数名称: phonon.structureSize

默认值: [1,1,1]

可选值: 3*1 int array

描述： phonon.structureSize 表示声子计算时超胞的大小；

案例: phonon.structureSize = [2,2,2]

参数名称: phonon.method

默认值: fd

可选值: fd/dfpt

描述： phonon.method 表示声子计算的方式；fd为有限位移法；dfpt为密度泛函微扰理论方法；

案例: phonon.method = dfpt

参数名称: phonon.type

默认值: phonon

可选值: phonon/band/dos/bandDos

描述： phonon.type 表示声子计算哪些性质：phonon对应计算力常数矩阵或force set；band对应计算声子能带；dos对应计算声子态密度；bandDos对应计算声子能带及声子态密度；

案例: phonon.type = bandDos

参数名称: phonon.isDisplacement

默认值: true

可选值: true/false

描述： phonon.isDisplacement 表示fd方法计算声子计算时是否进行位移；

案例: phonon.isDisplacement = true

参数名称: phonon.fdDisplacement

默认值: 0.01

可选值: real

描述： phonon.fdDisplacement 表示fd方法计算声子计算时进行位移的大小；

案例: phonon.fdDisplacement = 0.05

参数名称: phonon.iniPhonon

默认值: 无

可选值: 指定phonon.json的路径

描述： phonon.iniPhonon 表示声子能带或态密度计算时读取力常数矩阵或force set时的路径；

案例: phonon.iniPhonon = ./phonon.json

参数名称: phonon.qsamping

默认值: MP

可选值: MP/G

描述： phonon.qsamping 表示计算声子时布里渊区q点采样方法，Monkhorst-Pack 方法/ Gamma centered 方法；

案例: phonon.qsamping = G

参数名称: phonon.qpoints

默认值: [1,1,1]

可选值: 3*1 int array

描述： phonon.qpoints 表示声子计算时Q空间网格取样大小；

案例: phonon.qpoints = [9,9,9]

参数名称: phonon.qpointsLabel

默认值: 无

可选值: n*1 string array

描述： phonon.qpointsLabel 表示声子能带计算时高对称点标签；

案例: phonon.qpointsLabel = [G,M,K,G]

参数名称: phonon.qpointsCoord

默认值: 无

可选值: 3n*1 real array

描述： phonon.qpointsCoord 表示声子能带计算时高对称点坐标；

案例: phonon.qpointsCoord = [0, 0, 0, 0.5, 0.5, 0.5, 0, 0, 0.5, 0, 0, 0]

参数名称: phonon.qpointsNumber

默认值: 51

可选值: int

描述： phonon.qpointsNumber 表示声子能带相邻两个高对称点的间隔；

案例: phonon.qpointsNumber = 100

参数名称: phonon.primitiveUVW

默认值: [1,0,0,0,1,0,0,0,1]

可选值: 9*1 real array

描述： phonon.primitiveUVW 声子能带计算时，超胞的晶格常数乘上UVW系数等于原胞的晶格矢量；

案例: phonon.primitiveUVW = [1,0,0,0,1,0,0,0,1]

参数名称: phonon.dosRange

默认值: [0, 40]

可选值: 2*1 real array

描述： phonon.dosRange 表示声子态密度计算能量的区间；

案例: phonon.dosRange = [-15,15]

参数名称: phonon.dosResolution

默认值: 0.1

可选值: real

描述： phonon.dosResolution 表示声子态密度计算能量间隔精度；

案例: phonon.dosResolution = 0.01

参数名称: phonon.dosSigma

默认值: 0.1

可选值: real

描述： phonon.dosSigma 表示声子态密度计算时的展宽；

案例: phonon.dosSigma = 0.1

参数名称: phonon.dfptEpsilon

默认值: false

可选值: false/true

描述： phonon.dfptEpsilon 是phonon.method = dfpt时控制介电常数计算的开关；

案例: phonon.dfptEpsilon = true

参数名称: phonon.nac

默认值: phonon.dfptEpsilon = true 时默认为true

可选值: false/true

描述： 当phonon.dfptEpsilon = true时，若计算能带和态密度，phonon.nac作为是否使用non-analytical term correction的开关；

案例: phonon.nac = false

参数名称: phonon.thermal

默认值: false

可选值: false/true

描述： phonon.thermal 是 task=phonon且phonon.type=dos或phonon.type=bandDos时控制热力学性质计算的开关；

案例: phonon.thermal = true

参数名称: phonon.thermalRange

默认值: [0,1200,10]

可选值: 3*1 real array

描述： phonon.thermalRange [min_T, max_T, ΔT]表示热力学性质计算时温度的选取范围以及数据存储间隔；

案例: phonon.thermalRange = [0,1000,10]

参数名称: elastic.dispOrder

默认值: 1

可选值: 1/2

描述： elastic.dispOrder 表示弹性常数计算时原子振动的方式，1对应中心差分法，有两种振动方式，2对应四种振动方式；

案例: elastic.dispOrder = 1

参数名称: elastic.dispRange

默认值: 0.01

可选值: real

描述： elastic.dispRange 表示弹性常数计算时的原子位移；

案例: elastic.dispRange = 0.05

参数名称: aimd.ensemble

默认值: NVE

可选值: NVE/NVT/TS

描述： aimd.ensemble 表示分子动力学模拟时选用的系综；TS对应高温退火过程；

案例: aimd.ensemble = NVE

参数名称: aimd.thermostat

默认值: none

可选值: none/andersen/noseHoover

描述： aimd.thermostat 表示分子动力学模拟时选用的热浴方法；

案例: aimd.thermostat = andersen

参数名称: aimd.iniTemp

默认值: 无

可选值: real

描述： aimd.iniTemp 表示分子动力学模拟时的初始温度；

案例: aimd.iniTemp = 1000

参数名称: aimd.finTemp

默认值: aimd.iniTemp

可选值: real

描述： aimd.finTemp 表示分子动力学模拟时的末态温度；

案例: aimd.finTemp = 1000

参数名称: aimd.timeStep

默认值: 无

可选值: real

描述： aimd.timeStep 表示分子动力学模拟时的时间步长；

案例: aimd.timeStep = 1

参数名称: aimd.totalSteps

默认值: 无

可选值: real

描述： aimd.totalSteps 表示分子动力学模拟的总步数；

案例: aimd.totalSteps = 10000

6. 输出文件格式说明

6.1. relax.json

relax.json 为 task = relax 时的输出文件，当 task类型为其他时，该文件不输出。

（1） relax.json 中包含 1*N 个结构体；

（2）每个结构体保存着结构弛豫中每个离子步优化之后的结构信息，具体包含3部分信息:

Atoms 中保存着每个原子的信息，每个Atoms中包含5部分信息：

Element 为原子的元素名;

Fix 为原子是否固定;

Mag 为原子的初始磁矩;

Position 为原子的对应的坐标；

Pot 为原子的赝势信息；

CoordinateType 为坐标类型： Direct 为分数坐标, Cartesian 为笛卡尔坐标；

FixLattice 为晶胞向量是否固定；

Lattice 为晶格常数；

6.2. system.json

除 task = frequency 、task = elastic 、task = epsilon外，其余task计算输出system.json文件。

（1） system.json 中包含6个结构体;

（2） AtomInfo 中包含5部分信息:

Atoms 中保存着每个原子的信息；每个Atoms中包含2部分信息：

Element 为对应原子的元素名;

Position 为对应原子的对应的坐标；

CoordinateType 为坐标类型： Direct 为分数坐标, Cartesian 为笛卡尔坐标;

FixLattice 为是否固定晶胞的开关，在structure.as文件的第三行添加Fix标签控制；

Grid 为格点数目，绘制3维格点数据的时候需要使用

Lattice 为晶格常数；

（3） Eigenvalue 中包含3部分信息:

NumberOfBand 为总能带数；

Spin1 和 Spin2 (若考虑自旋)保存着能量本征值，其数据格式相同； 以 Spin1 为例，该结构包含3部分信息：

BandEnergies 中保存着每条能带每个 K点 对应的能量值；

Kpoints 中保存着每个 K点 的分数坐标；

Occupation 中保存着每条能带每个 K点 对应的电子占据值；

（4） Energy 中包含3部分信息：

EFermi 为自洽或最后一步结构弛豫的费米能级的值；

TotalEnergy 为自洽或最后一步结构弛豫的总能的值；

TotalEnergy0 为自洽或最后一步结构弛豫的 sgmia 趋于 0 时近似总能的值；

（5） Force 中包含1部分信息：

ForceOnAtoms 中保存着每个原子对应 XYZ 三个方向上的力的值；

（6） MagInfo 中包含着磁矩的信息;

TotalMagOnAtomsX 给出各原子X方向上的总磁矩，Y，Z同理，该信息输出需在input.in文件中打开io.magProject开关；

TotalMagOnOrbitalX 给出X方向磁矩分布在各轨道的分量，Y, Z同理，该信息输出需在input.in文件中打开io.magProject开关；

（7） Stress 中包含2部分信息：

Direction 中保存了 Total stress 的分量符号；

Total 中保存了在每个Direction分量上 stress 的值；

6.3. dos.json

dos.json 为 task = dos 时的输出文件，当 task类型为其他时，该文件不输出。

（1） dos.json 中包含2个结构体;

（2） AtomInfo 同 system.json 中的AtomInfo数据；

（3） DosInfo 中包含11部分信息：

DosEnergy 为所计算态密度的能量点的数据；

EFermi 为费米能级值；

EnergyMax 为所计算态密度的最大能量值；

EnergyMin 为所计算态密度的最小能量值；

SpinType 为计算时所设置的磁性类型；

Magnetization 为投影到每个原子上的磁矩分量；

NumberOfDos 为所计算的态密度的所有能量点的数目；

Orbit 为投影轨道信息；

IsProject 为态密度计算时是否打开了投影功能；

Spin1 和 Spin2 保存着态密度相关的数据，其数据格式相同； Spin1 中包含2部分信息：

Dos 为总的态密度的数据；

ProjectDos 包含原子数×轨道数目大小的结构体，每个结构体中包含着3部分信息：

AtomIndex 为当前 Contribution 对应的元素序号，该序号与AtomInfo中的 Atoms 的序号相同;

Contribution 为 AtomIndex 对应原子和 OrbitIndex 对应轨道在每个能量点下的态密度贡献值；

OrbitIndex 为当前 Contribution 对应的轨道序号，该序号与DosInfo中的Orbit的序号相同；

备注

注意：当只有Spin1的时候，Spin1为总的信息 当Spin1和Spin2同时存在的时候，Spin1为自旋向上的信息，Spin2为自旋向下的信息。

6.4. band.json

band.json 为 task = band 时的输出文件，当 task类型为其他时，该文件不输出。

（1） 此例为能带反折叠计算的 band.json 文件，包含3个结构体；

（2） AtomInfo 同 system.json 中的 AtomInfo 数据；

（3） BandInfo 中包含12部分信息：

BandGap 为带隙值；

CBM 为导带位置；

VBM 为价带位置；

CoordinatesOfKPoints 为能带计算时K点的分数坐标；

EFermi 为费米能级值；

SpinType 为计算时所设置的磁性类型；

SymmetryKPoints 为能带计算时高对称K点的字母表示；

SymmetryKPointsIndex 为能带计算时高对称K点的起始序号；

IsProject 为能带计算时是否打开了投影功能；

NumberOfband 为所计算的能带的所有能带的数目；

Orbit 为投影轨道信息；

Spin1 和 Spin2 保存着能带相关的数据，其数据格式相同, Spin1 中包含2部分信息：

Band 为总的能带的数据；

ProjectBand 包含原子数×轨道数目大小的结构体，每个结构体中包含着3部分信息：

AtomIndex 为当前 Contribution 对应的元素序号，该序号与AtomInfo中的 Atoms 的序号相同;

Contribution 为 AtomIndex 对应原子和 OrbitIndex 对应轨道在每个能量点下的能带贡献值；

OrbitIndex 为当前 Contribution 对应的轨道序号，该序号与BandInfo中的 Orbit 的序号相同；

（4） UnfoldingBandInfo 中包含8部分信息，除 Spin 部分结构与 BandInfo 不同，其余数据结构均一致：

Spin1 保存着反折叠能带的相关的数据， Spin1 中包含2部分信息：

UnfoldingBand 为总的能带数据；

Weight 为能带的权重值；

备注

注意：当只有Spin1的时候，Spin1为总的信息 当Spin1和Spin2同时存在的时候，Spin1为自旋向上的信息，Spin2为自旋向下的信息。

6.5. rho.json

rho.json 为 task = scf 以及 task =relax时的输出文件，当 task类型为其他时，该文件不输出。

（1） rho.json 中包含2个结构体；

（2） AtomInfo 同 system.json 中的 AtomInfo 数据；

（3） Rho 中包含信息：

TotalCharge 和 SpinCharge ； TotalCharge 和 SpinCharge 数据格式相同，都表示电荷密度其数据大小为AtomInfo中3个Grid的乘积；

备注

注意：在当只有TotalCharge的时候，TotalCharge为总的电荷密度；当TotalCharge和SpinCharge同时存在的时候，TotalCharge为总的电荷密度，SpinCharge为自旋电荷密度；

6.6. elf.json

elf.json 可为 task = elf 和 task = scf 且 io.elf设置为 true 以及 task = relax 且 io.elf设置为 true这 3种 task下的输出文件，当task类型为其他时，该文件不输出。

（1） elf.json 中包含2个结构体；

（2） AtomInfo 同 system.json 中的AtomInfo数据；

（3） elf 中包含信息：

TotalELF 和 SpinELF ； TotalELF 和 SpinELF 数据格式相同，都表示电子局域密度的数据，其数据大小为AtomInfo中3个Grid的乘积；

备注

注意：在当只有TotalELF的时候，TotalELF为总的局域电荷密度；当TotalELF和SpinELF同时存在的时候，TotalELF为总的局域电荷密度，SpinELF为自旋局域电荷密度；

6.7. potential.json

potential.json 可为 task = potential 和 task = scf 且 io.potential设置为 true 以及 task = relax 且 io.potential设置为 true这3种 task下的输出文件，当 task类型为其他时，该文件不输出。

（1） potential.json 中包含2个结构体；

（2） AtomInfo 同 system.json 中的AtomInfo数据；

（3） potential 中包含4部分信息：

TotalElectrostaticPotential 和 SpinElectrostaticPotential ； TotalElectrostaticPotential 和 SpinElectrostaticPotential 数据格式相同，都表示静电势函数的数据，其数据大小为AtomInfo中 3个Grid 的乘积；

TotalLocalPotential 和 SpinLocalPotential ； TotalLocalPotential 和 SpinLocalPotential 数据格式相同，都表示局域势函数的数据，其数据大小为AtomInfo中 3个Grid 的乘积；

备注

注意：potential.type = hartree/total/all，分别保存ElectrostaticPotential/LocalPotential/ElectrostaticPotential & LocalPotential 三种类型的势函数，对应静电势、局域势、静电势和局域势

6.8. pcharge.json

pcharge.json 为 task = pcharge 时的输出文件，当 task类型为其他时，该文件不输出。

（1） pcharge.json 中包含2个结构体；

（2） AtomInfo 同 system.json 中的 AtomInfo 数据；

（3） Pcharge 在本例中包含1部分信息，为第4条能带的电荷密度，若计算N条能带，Pcharge会写出N部分信息：

BandIndex 和 KpointIndex 分别对应计算能带的序号及计算所用K点；

TotalCharge 表示电荷密度的数据，其数据大小为AtomInfo中 3个Grid 的乘积；

备注

注意：当pcharge.sumK = true时，Pcharge只包含一部分信息，为所有计算的能带的电荷密度之和。

6.9. optical.json

optical.json 为 task = scf 且 io.optical = true 时的输出文件，当 task类型为其他时，该文件不输出。

（1） optical.json 中包含2个结构体；

（2） AtomInfo 同 system.json 中的 AtomInfo 数据；

（3） OpticalInfo 中包含9部分信息：

AbsorptionCoefficient 、 ExtinctionCoefficient 、 OpticalConductivity 、 Reflectance 、 RefractiveIndex 数据格式相同，分别对应吸收系数、消光系数、光电导率、反射率和折射率，其数据大小为 计算能量间隔点数 *6；

ImDielectricFunction 和 ReDielectricFunction 数据格式相同，分别对应介电函数的虚部和实部，其数据大小为 计算能量间隔点数 *6；

EnergyAxe 和 EnergyLoss 分别对应能量计算范围，能量损失系数。

6.10. frequency.json

frequency.json 为 task = frequency 时的输出文件，当 task类型为其他时，该文件不输出。

（1） frequency.json 中包含2个结构体；

（2） AtomInfo 同 system.json 中的 AtomInfo 数据；

（3） FrequencyInfo 中包含2部分信息：

两部分数据对应两种类型的频率，分别为 f 和 f/i ；

每种频率的信息分为两部分， eigenvalues 和 eigenvectors ，对应频率的本征值和本征向量，本征向量给出 x 、 y 、 z 、 dx、 dy 、dz 6个方向上的分量。

6.11. elastic.json

elastic.json 为 task = elastic 时的输出文件，当 task类型为其他时，该文件不输出。

（1） elastic.json 中包含2个结构体；

（2） AtomInfo 同 system.json 中的 AtomInfo 数据；

（3） ElasticInfo 中包含5部分信息：

CrystalSystem 给出体系的晶体类型；

ElasticModulus 数据大小为36，给出弹性模量的数据。

Hill 、 Reuss 和 Voigt 分别给出三种模型下计算出的体积模量和剪切模量的数据，此外 Hill 模型还给出杨氏模量和泊松比。

6.12. neb.json

neb.json 为 task = neb 时的输出文件，当 task类型为其他时，该文件不输出。

（1） neb.json 中包含7个结构体；

（2） Distance 给出每两个相邻构型（00与01、01与02...05与06）之间坐标的距离；

（3） Energy 体系总能，共有 image数量 +2 个数据

（4） Force 分为两部分，分别为最大受力和切向力，共有 image数量 个数据

（5） Iteration 给出所有插点结构在优化过程中的最大受力和总能数据，共有 image数量 个数据

（6） RelaxedStructure 给出所有构型在优化完成后的原子和晶胞信息

（7） UnrelaxStructure 给出所有构型优化前的原子和晶胞信息

（8） iniFin 表示是否对初态和末态结构进行自洽计算。

备注

注意：当iniFin = False时，Distance部分不提供00与01及05与06之间的坐标距离，Energy部分数据总数等于image数量。

6.13. phonon.json

phonon.json 为 task = phonon 时的输出文件，当 task类型为其他时，该文件不输出。

（1） 此例中phonon.method = dfpt, phonon.type = bandDos， phonon.json 中包含8个结构体；

（2） BandInfo 包含7部分信息，结构与 band.json 文件中 BandInfo 部分相似，

CoordinatesOfQPoints 为计算声子能带时Q点的分数坐标；

NumberOfBand 为计算声子能带时所有能带数目；

NumberOfQPoints 为计算声子能带时高对称Q点的字母表示；

Spin1 为计算声子能带的相关数据；

SpinType 为计算声子能带时设置的自旋类型；

SymmetryQPoints 为声子能带计算时高对称Q点的字母表示；

SymmetryQPointsIndex 为声子能带计算时高对称Q点的起始序号；

（3） DosInfo 包含6部分信息，结构与 dos.json 文件中 DosInfo 部分相似，

DosEnergy 为计算声子态密度时能量点的数据；

EnergyMax 为计算声子态密度的最大能量值；

EnergyMin 为计算声子态密度的最小能量值；

NumberOfDos 为计算声子态密度时所有能量点的数目；

Spin1 为计算声子态密度的相关数据；

SpinType 为计算声子态密度时设置的自旋类型；

（4） EpsilonInfo 包含3部分信息，给出介电常数相关数据，详细解析请见第（10）条。

（5） ForceConstant 分为2部分， ConstantIndex 给出力学常数数组的维度， ConstantValue 为力学常数的数据，数据大小为Index中各维度之乘积。

（6） PrimitiveAtomInfo 分为3部分，给出原胞原子信息。

（7） SupercellAtomInfo 分为3部分，给出超胞原子信息。

（8） UnitAtomInfo 分为3部分，给出单胞原子信息。

（9） phonon 分为20部分

dfptEpsilon 为介电常数的计算开关；

dosRange 为计算声子态密度时能量的范围；

dosResolution 为计算声子态密度的能量间隔；

dosSigma 为计算声子态密度时的展宽；

eigenVectors 为本征向量的开关；

fdDisplacement 为计算声子时原子位移的大小，该参数在fd方法时有效；

iniPhonon 是否提供声子计算的json文件；

isDisplacement 是否有位移；

method 计算声子的方法；

nac 为nac的开关；

primitiveUVW 计算声子能带时是否将超胞还原成原胞；

qpoints 为计算声子能带时Q点的大小；

qpointsCoord 为计算声子能带时Q点的坐标；

qpointsLabel 为计算声子能带时Q点的标签；

qpointsNumber 为计算声子能带时Q点的数目；

qsamping 为计算声子能带时Q点采样的方法；

structureSize 为计算声子时扩胞参数；

thermal 为热力学计算的开关；

thermalRange 为热力学计算的温度范围；

type 为声子计算的任务类型。

（10）当task=phonon时，若打开介电常数或热力学性质计算的开关， phonon.json 结构中会分别写入 EpsilonInfo 和 ThermalInfo 数据，如下图所示：

其中 EpsilonInfo 分为3部分：

BornEfectiveCharge 给出波恩有效电荷数据；

Epsilon 给出介电常数数据；

Piezoelectric 给出压电数据；

其中 ThermalInfo 分为4部分：

Entropy 给出熵的数据；

HeatCapacity 给出热容数据；

HelmholtzFreeEnergy 给出Helmholtz自由能数据；

Temperature 给出温度数据；

备注

注意：当phonon.method = fd 时, phonon.json文件会写入Displacements 和 Forceset 两部分数据。

6.14. aimd.json

aimd.json 为 task = aimd 时的输出文件，当 task类型为其他时，该文件不输出。

（1） aimd.json 中包含3个结构体；

（2） Energy 包含两部分信息，分别为分子动力学模拟每一步的自由能数据和总能数据；数据大小取决于模拟总步数；

（3） structure 给出分子动力学模拟每一步的原子位置数据；

（4） Temperature 给出分子动力学模拟每一步的温度数据。

6.15. epsilon.json

epsilon.json 为 task = epsilon 时的输出文件，当 task类型为其他时，该文件不输出。

（1） epsilon.json 中包含 2 个结构体；

（2） AtomInfo 同 system.json 中的AtomInfo数据；

（3） EpsilonInfo 包含3部分数据：

BornEffectiveCharge 为波恩有效电荷数据；

Epsilon 为介电常数数据，分为电子贡献、离子贡献和总的介电常数；

Piezoelectric 为压电张量的数据，分为电子贡献、离子贡献和总的压电张量。

6.16. bader.json

bader.json 为 task = scf且io.bader = true 时的输出文件，当 task类型为其他时，该文件不输出。

（1） bader.json 中包含 2 个结构体；

（2） AtomInfo 同 system.json 中的AtomInfo数据；

（3） BaderInfo 包含3部分数据：

AtomicVolume 为bader体积数据；

Charge 为bader电荷数据；

MinDistance 为最近原子距离。

6.17. polarization.json

polarization.json 为 task = polarization 时的输出文件，当 task类型为其他时，该文件不输出。

（1） polarization.json 中包含 5 个结构体；

（2） AtomInfo 同 system.json 中的AtomInfo数据；

（3） Electronic 为电子贡献数据；

（4） Ionic 为离子贡献数据；

（5） Quantum 为极化量子数据；

（6） Total 为总的极化数据；

7. 辅助工具使用教程

7.1. env环境部署

依赖环境: Python3.6及以上

依赖库安装：

Pymatgen库 ：使用 pip install pymatgen 安装；

Statsmodels库 ：使用 pip install statsmodels 安装；

Dspawpy库 ：使用 pip install -i https://test.pypi.org/simple/ dspawpy==0.3.0 安装；

7.2. rho电荷密度数据处理

DS-PAW使用 pymatgen 的画图程序来显示的二维数据，使用 VESTA 来显示三维数据。以应用教程中Si体系的 band.json 和 dos.json 为例子：

在计算目录中新建一个 trans_rho.py 文件，内容如下：

1 import json
2 from dspawpy.io import write_VESTA_format
3
4 with open("./rho.json","r") as file:
5 rho = json.load(file)
6
7 write_VESTA_format(rho["AtomInfo"], [rho["Rho"]["TotalCharge"]], "DS-PAW-rho.vesta")

第1，2行为需要导入的 python 库函数；

第4，5行为需要读取的 json 文件；

第7行为执行 write_VESTA_format 函数，将数据保存为VESTA可识别的格式，其中 rho["AtomInfo"] 为读取 rho.json 中的晶格及坐标信息, [rho["Rho"]["TotalCharge"]] 为 rho.json 中总的电荷密度的三维数据, DS-PAW-rho.vesta 表示生成的 vesta 格式数据；

执行 python trans_rho.py ；

得到转换后的文件 DS-PAW-rho.vesta ，将其重命名为 CHGCAR.vasp 以便在 VESTA 显示；

将 CHGCAR.vasp 文件拖入VESTA中则可得到如下的电荷密度图

7.3. band能带数据处理

以不开自旋时的MoS2体系的 band.json 为例子：

（1） 普通能带处理 ：

创建 bandplot.py 文件，具体代码如下：

1from pymatgen.electronic_structure.plotter import BSPlotter
2from dspawpy.io import get_band_data
3
4band_data = get_band_data("./band.json")
5
6bsp = BSPlotter(bs=band_data)
7plt = bsp.get_plot()
8plt.savefig("bandplot.png",img_format="png")
9plt.show()

第1、2行为需要导入的 python 库函数，这里用到了pymatgen中的 BSPloter 库，以及 dspawpy.io 中的 get_band_data 函数；

第4行为读取 band.json 文件构造 band_data 这个结构体；

第6行为调用BSPloter处理 band_data 数据；

第7行为使用 bsp 下面的 get_plot 进行画图；

第8行为保存图片的名称和格式，将数据保存为png格式命名为 bandplot.png ；

第9行为显示图片，如果用户运行的环境无法直接显示图片，用户可以将该行注释，之后打开 bandplot.png 文件查看。

执行 python bandplot.py

生成 bandplot.png 文件

知识点：

Pymatgen中主要用到 electronic_structure.plotter 模块，基本上该模块下的80%的功能都能使用；

dspawpy.io 模块为 DS-PAW 的接口模块；

使用 get_band_data 函数可以将 DS-PAW 计算得到的 band.json 文件转化为 pymatgen 支持的格式；

使用 BSPlotter 模块获取到 DS-PAW 计算的 band.json 的数据；

使用 BSPlotter 模块中 get_plot 函数绘制能带图；

使用 savefig 函数可以将能带图以不同格式保存；

使用 show 函数能够直接显示能带图，如果用户的机器上不支持图形界面，可以用#注释 show函数；

执行代码可以得到以下能带图：

（2） 将能带投影到每一种元素然后分别作图，通过线条的粗细来表示该元素对该轨道的贡献 ：

创建 bandplot_elt_projected.py 文件，具体代码如下：

 1from pymatgen.electronic_structure.plotter import BSPlotterProjected
 2from dspawpy.io import get_band_data
 3
 4band_data = get_band_data("./band.json")
 5
 6# 构建投影band数据实例
 7bsp = BSPlotterProjected(bs=band_data)
 8# 绘制按元素投影图片,返回matplotlib.pyplot
 9plt = bsp.get_elt_projected_plots()
10plt.savefig("bandplot_elt_projected.png",img_format="png")
11plt.show()

知识点：

用户如果需要绘制能带投影的数据，此时需要使用 BSPlotterProjected模块；

使用 BSPlotterProjected模块中 get_elt_projected_plots 函数能够绘制每种元素对轨道贡献的能带图；

执行代码可以得到以下能带图：

（3） 将能带投影到每一种元素然后分别作图，通过不同的颜色来表示该元素对该轨道的贡献：

创建 bandplot_elt_projected_color.py 文件，具体代码如下：

 1from pymatgen.electronic_structure.plotter import BSPlotterProjected
 2from dspawpy.io import get_band_data
 3
 4band_data = get_band_data("./data/band.json")
 5
 6bsp = BSPlotterProjected(bs=band_data)
 7# 绘制投影到元素band图片,返回matplotlib.pyplot({'Mo':['d'],'S':['s']})
 8plt = bsp.get_elt_projected_plots_color()
 9plt.savefig("bandplot_elt_projected_color.png",img_format="png")
10plt.show()

知识点：

使用 BSPlotterProjected模块中 bandplot_elt_projected_color 函数能够绘制每种元素对轨道贡献的能带图，用红绿蓝三原色来表示 spd轨道；

执行代码可以得到以下能带图：

（4） 能带投影到不同元素的不同轨道（L）：

创建 bandplot_projected.py 文件，具体代码如下：

 1from pymatgen.electronic_structure.plotter import BSPlotterProjected
 2from dspawpy.io import get_band_data
 3
 4band_data = get_band_data("./data/band.json")
 5
 6bsp = BSPlotterProjected(bs=band_data)
 7
 8# 绘制投影到元素某些轨道band，返回matplotlib.pyplot
 9plt = bsp.get_projected_plots_dots({'Mo':['d'],'S':['s']})
10plt.savefig("bandplot_projected.png",img_format="png")
11plt.show()

知识点：

使用 BSPlotterProjected模块中 get_projected_plots_dots可以让用户来自定义需要绘制的某种元素某种轨道(L)的能带图；

例如 get_projected_plots_dots ({'Mo':['d'],'S':['s']})就是绘制Mo的d轨道和S的s轨道；

执行代码可以得到以下能带图：

（5） 将能带投影到不同原子的不同轨道(M)：

创建 bandplot_plots_dots_patom_pmorb.py 文件，具体代码如下：

 1from pymatgen.electronic_structure.plotter import BSPlotterProjected
 2from dspawpy.io import get_band_data
 3
 4band_data = get_band_data("./band.json")
 5bsp = BSPlotterProjected(bs=band_data)
 6
 7plt = bsp.get_projected_plots_dots_patom_pmorb(dictio={'Mo':['px','py','pz']}, dictpa={'Mo':[1]})
 8
 9plt.savefig("bandplot_projected_plots_dots_patom_pmorb.png",img_format="png")
10plt.show()

第1、2行为需要导入的 python 库函数，这里用到了pymatgen中的 BSPloter 库，以及 dspawpy.io 中的 get_band_data 函数；

第4行为读取 band.json 文件构造 band_data 这个结构体；

第5行为调用 BSPlotterProjected 处理 band_data 数据；

第7行为使用 bsp 下面的 get_projected_plots_dots 进行画图，用户可以根据自己的体系和需要绘制的投影轨道对参数进行修改；

第9行为保存图片的名称和格式，这里将数据保存为png格式命名为 bandplot_projected_plots_dots_patom_pmorb.png ；

第10行为显示图片，如果用户运行的环境无法直接显示图片，用户可以将该行注释，之后打开 png 文件查看。

知识点：

使用 BSPlotterProjected模块中 get_projected_plots_dots_patom_pmorb 的自由度更高，可以让用户来自定义需要绘制的某种原子某种轨道 (M) 的能带图；

dictpa指定原子，dictio 指定该原子的轨道；

get_projected_plots_dots_patom_pmorb函数中还可以使用 sum_atoms 功能将多个原子的贡献相加，该功能用户可以自行根据使用方法进行尝试；

注意：get_projected_plots_dots_patom_pmorb函数中序号是从1开始的；

执行代码可以得到以下能带图：

7.4. dos态密度数据处理

以应用教程中的反铁磁NiO体系的 dos.json 为例子：

（1） 总的态密度 ：

创建 dosplot_total.py 文件，具体代码如下：

 1from pymatgen.electronic_structure.plotter import DosPlotter
 2from dspawpy.io import get_dos_data
 3
 4dos_data = get_dos_data("dos.json")
 5dos_plotter = DosPlotter(stack=False,zero_at_efermi=True)
 6dos_plotter.add_dos('total dos',dos=dos_data)
 7
 8plt = dos_plotter.get_plot()
 9plt.savefig("dos_total.png",img_format="png")
10plt.show()

第1、2行为需要导入的 python 库函数，这里用到了pymatgen中的 BSPloter 库，以及 dspawpy.io 中的 get_dos_data 函数；

第4行为读取 dos.json 文件构造 dos_data 这个结构体；

第5行为调用 DosPlotter 处理 dos_data 数据，括号中 stack=False 表示态密度作图方式为曲线， stack=True 表示作图方式为面积， zero_at_efermi 控制是否将零点设为费米能级；

第6行使用 add_dos 来定义要处理的对象 dos ，调用前边定义好的dos对象 dos_data

第8行使用 dos_plotter 下面的 get_plot 进行画图；

第9行为保存图片的名称和格式，这里将数据保存为png格式命名为 dos_total.png ；

第10行为显示图片，如果用户运行的环境无法直接显示图片，用户可以将第该行注释，之后打开 png 文件查看。

知识点：

使用 get_dos_data 函数可以将DS-PAW计算得到的 dos.json 文件转化为 pymatgen 支持的格式；

使用 DosPlotter模块获取到DS-PAW计算的 dos.sjon 的数据；

DosPlotter函数可以传递参数：stack参数表示画态密度是否加阴影， zero_at_efermi 表示是否在态密度图中进行将费米能量置零，这里设置 stack=False , zero_at_efermi=False ；

使用 DosPlotter 模块中 add_dos 获取态密度的数据；

DosPlotter模块中 et_plot函数 绘制态密度图；

执行代码可以得到以下态密度图：

（2） 将态密度投影到不同的轨道上(L)：

创建 dosplot_spd.py 文件，具体代码如下：

 1from pymatgen.electronic_structure.plotter import DosPlotter
 2from dspawpy.io import get_dos_data
 3
 4dos_data = get_dos_data("dos.json")
 5dos_plotter = DosPlotter(stack=False,zero_at_efermi=True)
 6dos_plotter.add_dos_dict(dos_data.get_spd_dos())
 7
 8plt = dos_plotter.get_plot()
 9plt.savefig("dos_spd.png",img_format="png")
10plt.show()

第1、2行是导入需要的 python 库函数，这里用到了 pymatgen 中的 DosPlotter 库，以及 dspawpy.io 中的 get_dos_data 函数；

第4行为读取 dos.json 文件构造 dos_data 这个结构体；

第5行为调用BSPlotterProjected处理 dos_data 数据，括号中 stack=False 表示态密度作图方式为曲线， stack=True 表示作图方式为面积， zero_at_efermi 控制是否将零点设为费米能级；

第6行使用 add_dos_dict 获取投影信息，对 dos_data 进行 get_spd_dos 操作，获得投影到轨道的信息；

第7行为保存图片的名称和格式，这里将数据保存为png格式命名为 dos_spd.png ；

第8行为显示图片，如果用户运行的环境无法直接显示图片，用户可以将该行注释，之后打开 dos_spd.png 文件查看。

知识点：

使用 DosPlotter模块中 add_dos_dict 函数 获取投影态密度的数据，之后使用 get_spd_dos 将投影信息按照 spd 轨道投影输出；

执行代码可以得到以下态密度图：

（3） 将态密度投影到不同的元素上 ：

创建 dosplot_element.py 文件，具体代码如下：

 1# 导入pymatgen DosPlotter模块
 2from pymatgen.electronic_structure.plotter import DosPlotter
 3# 导入读取DS-PAW dos.json数据模块
 4from dspawpy.io import get_dos_data
 5
 6
 7dos_data = get_dos_data("dos.json")
 8dos_plotter = DosPlotter(stack=False,zero_at_efermi=True)
 9
10#按元素添加dos
11dos_plotter.add_dos_dict(dos_data.get_element_dos())
12
13#返回matplotlib.pyplot
14plt = dos_plotter.get_plot()
15plt.savefig("dos_element.png",img_format="png")
16plt.show()

知识点：

使用 DosPlotter模块中 add_dos_dict 函数 获取投影态密度的数据，之后使用 get_element_dos 将投影信息按照不同元素投影输出；

执行代码可以得到以下态密度图：

（4） 将态密度投影到不同的元素的不同轨道(M)上：

创建 dosplot_element_orbital.py 文件，具体代码如下：

1from pymatgen.electronic_structure.plotter import DosPlotter
2from pymatgen.electronic_structure.core import Orbital
3from dspawpy.io import get_dos_data
4
5dos_data = get_dos_data("dos.json")
6dos_plotter = DosPlotter(stack=False,zero_at_efermi=False)
7dos_plotter.add_dos("Ni dxy",dos_data.get_site_orbital_dos(dos_data.structure[0],Orbital(4)))
8#dos_plotter.save_plot("dos_element_orbital.png",img_format="png")
9dos_plotter.show()

知识点：

使用 get_site_orbital_dos函数 提取dos数据中特定原子，特定轨道的贡献，这是获取第2个原子的第5个轨道的态密度 dos_data.structure[0],Orbital(4) ；

之后使用 DosPlotter模块中 add_dos函数 进行画图；

注意：get_site_orbital_dos函数中序号是从0开始的；

执行代码可以得到以下态密度图：

（5） 将态密度投影到不同的原子的t2g轨道和eg轨道上：

以应用案例NiO的反铁磁计算得到的 dos.json 为例，

创建 dosplot_t2g_eg.py 文件，具体代码如下：

1from pymatgen.electronic_structure.plotter import DosPlotter
2from dspawpy.io import get_dos_data
3
4dos_data = get_dos_data("./dos.json")
5dos_plotter = DosPlotter(stack=False,zero_at_efermi=True)
6dos_plotter.add_dos_dict(dos_data.get_site_t2g_eg_resolved_dos(dos_data.structure[1]))
7dos_plotter.save_plot("dos_t2g_eg.png",img_format="png")
8dos_plotter.show()

第1，2行为需要导入的 python 库函数，这里用到了pymatgen中的 DosPlotter 库，以及我们自己写的 dspawpy.io 中的 get_dos_data 函数；

第4行为读取 dos.json 文件构造 dos_data 结构体；

第5行为调用DosPlotter处理dos_data数据，括号中 stack=False 表示态密度作图方式为曲线， stack=True 表示作图方式为面积， zero_at_efermi 控制是否将零点设为 费米能级 ；

第6行使用 add_dos_dict 获取 投影信息 ，对dos_data进行 get_site_t2g_eg_resolved_dos 操作，获得 投影到轨道 的信息；

第7行为保存图片的名称和格式，这里将数据保存为png格式命名为 dos_t2g_eg.png ；

第8行为显示图片，如果用户运行的环境无法直接显示图片，用户可以将该行注释了，之后打开 dos_t2g_eg.png 文件查看。

执行 python dosplot_t2g_eg.py ；

生成 dos_t2g_eg.png 文件

知识点：

使用 get_site_t2g_eg_resolved_dos函数 提取dos数据中特定原子的 t2g和 eg轨道的贡献，这是获取第1个原子的t2g和eg轨道的贡献；

之后使用 DosPlotter 模块中 add_dos_dict函数 进行画图；

7.5. bandDos能带和态密度共同显示

以应用教程中Si体系的 band.json 和 dos.json 为例子：

（1） 将能带和态密度显示在一张图上：

创建 banddosplot.py 文件，具体代码如下：

 1# 导入pymatgen BSDOSPlotter 画图模块
 2from pymatgen.electronic_structure.plotter import BSDOSPlotter
 3# 导入dspawpy 读取DS-PAW band.json,dos.json模块
 4from dspawpy.io import get_band_data,get_dos_data
 5
 6# 读取dos.json, 参数dos.json文件路径
 7dos_data = get_dos_data("./data/dos.json")
 8# 读取band.json, 参数band.json文件路径
 9band_data = get_band_data("./data/band.json")
10
11bdp = BSDOSPlotter()
12
13# 绘制BandDos图，返回matplotlib.pyplot
14plt = bdp.get_plot(bs=band_data,dos=dos_data)
15
16# 保存png图片
17plt.savefig("banddos.png",img_format="png")
18# 显示图片
19plt.show()

知识点：

首先使用 dspawpy.io 中的 get_band_data 和 get_dos_data 模块获取 band.json 和 dos.json 的数据；

之后使用 BSDOSPlotter模块中的 get_plots函数 直接进行画图；

如果需要将投影能带和投影态密度画在一起，可以参考前面单独画图的代码。

执行代码可以得到以下能带态密度图：

7.6. potential势函数数据处理

以Si的slab模型的 potential.json 为例：

（1） 势函数转化为VESTA能够支持的三维显示格式：

创建 trans_VESTA.py 文件，具体代码如下：

1 import json
2 from dspawpy.io import write_VESTA_format
3
4 with open("./potential.json","r") as file:
5       potential= json.load(file)
6
7 write_VESTA_format(potential["AtomInfo"], [potential["Potential"]["TotalElectrostaticPotential"], potential["Potential"]], "DS-PAW.vesta")

第1，2行为需要导入的 python 库函数；

第4，5行为需要读取的 json 文件，这里 ./potential.json 指的时读取当前路径下的 potential.json ，如果需要读取其他的 json* 文件可以自行修改；

第6行为执行 write_VESTA_format 函数，将数据保存为 VESTA 可识别的格式，其中 potential["AtomInfo"] 为读取 potential.json 中的晶格及坐标信息, potential["Potential"]["TotalElectrostaticPotential"] 为 potential.json 中总的静电势的三维数据, "DS-PAW- potential.vesta" 表示将这些数据写入到 DS-PAW- potential.vesta 文件中；

VESTA展现的效果可以通过设置VESTA中Isosurface level数值来调节，具体步骤为VESTA-properties-Isosurfaces-Isosurface level

知识点：

使用 with open语法 加载需要处理的三维网格数据；

使用 write_VESTA_format函数 可以将三维数据保存为VESTA格式的数据，其中 potential["AtomInfo"] 为晶格信息， potential["Potential"]["TotalElectrostaticPotential"] 总的静电势的数据，之后将数据命名为 DS-PAW.vesta ；

write_VESTA_format 支持输出多个网格数据，例如想要保存总的和自旋静电势，命令如下：write_VESTA_format(potential["AtomInfo"], [potential["Potential"]["TotalElectrostaticPotential"], potential["Potential"]["SpinElectrostaticPotential"]], " DS-PAW.vesta ") ；

处理部分电荷密度文件pcharge.json时，最后一行代码应可参考write_VESTA_format(pcharge["AtomInfo"], [pcharge["Pcharge"][0]["TotalCharge"]], "DS-PAW-pcharge.vesta")格式，其中[0]对应json文件中第1条待测能带电荷密度的三维数据，若需处理第2条能带该关键词应写作[1]。

执行代码可以得到VESTA支持的数据，将数据拽入VESTA中得到以下势函数三维图：

（2） 将三维势函数进行面内平均：

创建 plot _planar_macroscopic.py 文件，具体代码如下：

 1import json
 2import numpy as np
 3from dspawpy.plot import plot_potential_along_axis
 4
 5with open("./potential.json","r") as file:
 6    potential = json.load(file)
 7
 8grid = potential["AtomInfo"]["Grid"]
 9pot= np.asarray(potential ["Potential"]["TotalElectrostaticPotential"]).reshape(grid,order="F")
10
11plt = plot_potential_along_axis(pot,axis=2,smooth=False)
12plt.legend()
13plt.show()

第1，2，3行为需要导入的 python 库函数，这里用到了 dspawpy.io 中的 plot_potential_along_axis 函数；

第5，6行为需要读取的 json 文件，这里 ./potential.json 指的时读取当前路径下的 potential.json ，如果需要读取其他的 json 文件可以自行修改；

第8行为获取grid，其中 potential["AtomInfo"]["Grid"] 为读取 potential.json 中的晶格及坐标信息;

第9行为执行 pot 函数，其中 potential["Potential"]["TotalLocalPotential"] 为读取 potential.json 中的局部势能信息,

第11行调用 plot_potential_along_axis 函数作图， smooth=False 则不作宏观平均图；

第12行为设置图例；

第13行为显示图片

知识点：

进行面内平均及宏观平均时需要使用到 numpy 的库；

DS-PAW软件中三维的数据都是按照一维的格式保存的，因此需要使用 np.asarray函数 将一维数据还原成3维数据；

之后使用 plot_potential_along_axis 将某两个维度进行求平均，之后将剩下的维度数据进行绘图；

plot_potential_along_axis的第一个变量为三维格点数据，第二个为沿着某个维度画图，将另外两个维度求平均，第三个参数为是否绘制宏观平均的曲线，第四个参数为宏观平均算法中的权重；

执行代码可以得到以下势函数图：

7.7. elf电子局域密度数据处理

以快速入门Si电子局域密度计算计算得到的 elf.json 为例：

在计算目录中新建一个 trans_elf.py 文件，内容如下：

1 import json
2 from dspawpy.io import write_VESTA_format
3
4 with open("./elf.json","r") as file:
5       elf = json.load(file)
6
7 write_VESTA_format (elf ["AtomInfo"], [elf ["ELF"]["TotalELF"]], "DS-PAW-elf.vesta")

第1，2行为需要导入的 python 库函数

第4，5行为需要读取的 json 文件，这里 ./elf.json 指的时读取当前路径下的 elf.json ，如果需要读取其他的 json 文件可以自行修改；

第7行为执行 write_VESTA_format 函数，将数据保存为 VESTA 可识别的格式，其中 elf["AtomInfo"] 为读取 elf.json 中的晶格及坐标信息， elf ["ELF"]["TotalELF"] 为读取 elf.json 中总的局域电荷密度的三维数据, DS-PAW- elf.vesta 表示将这些数据写入到 DS-PAW- elf.vesta 文件中；

执行 python trans_ elf.py ；

得到转换后的文件 DS-PAW-elf.vesta ，将其重命名为 elf.vasp 以便在 VESTA 显示；

将 elf.vasp 文件拖入 VESTA 中则可得到如下的势能图，展现的效果可以通过设置VESTA中 Isosurface level 数值来调节，具体步骤为 VESTA-properties-Isosurfaces-Isosurface level 。

7.8. pcharge部分电荷密度数据处理

以快速入门石墨烯部分电荷密度计算得到的 pcharge.json 为例：

在计算目录中新建一个 trans_pcharge.py 文件，内容如下：

1import json
2from dspawpy.io import write_VESTA_format
3
4with open("./pcharge.json","r") as file:
5      pcharge= json.load(file)
6
7write_VESTA_format(pcharge["AtomInfo"], [pcharge["Pcharge"][0]["TotalCharge"]], "DS-PAW-pcharge.vesta")

第1，2行为需要导入的 python 库函数

第4，5行为需要读取的 json 文件，这里 ./pcharge.json 指的时读取当前路径下的 pcharge.json ，如果需要读取其他的 json 文件可以自行修改；

第7行为执行 write_VESTA_format 函数，将数据保存为 VESTA 可识别的格式，其中 pcharge["AtomInfo"] 为读取 pcharge.json 中的晶格及坐标信息， pcharge["Pcharge"][0]["TotalCharge"] 为 pcharge.json 中第1条待测能带电荷密度的三维数据，此例中为能带4的数据，若写作 pcharge["Pcharge"][1]["TotalCharge"] 则读取能带5的数据, DS-PAW-pcharge.vesta 表示将这些数据写入到 DS-PAW-pcharge.vesta 文件中；

执行 python trans_pcharge.py ；

得到转换后的文件 DS-PAW-pcharge.vesta ，将其重命名为 pcharge.vasp 以便在 VESTA 显示；

将 pcharge.vasp 文件拖入 VESTA 中则可得到如下的势能图，展现的效果可以通过设置vesta中 Isosurface level 数值来调节，具体步骤为 vesta-properties-Isosurfaces-Isosurface level 。

7.9. optical光学性质数据处理

以快速入门Si体系光学性质计算得到的 optical.json 为例：

（1） 反射率数据处理：

创建 optical.py 文件，具体代码如下：

 1import matplotlib.pyplot as plt
 2from dspawpy.plot import plot_optical
 3
 4plot_optical("./optical.json","Reflectance",index=0)
 5
 6plt.xlabel('Photon energy (eV)', fontsize=16)
 7plt.ylabel('Reflectance', fontsize=16)
 8plt.tick_params(labelsize=16)
 9
10plt.savefig("optical.png",img_format="png")
11plt.show()

第1，2行为需要导入的 python 库函数；这里用到了 matplotlib 库，以及我们自己写的 dspawpy.plot 中的 plot_optical 模块

第4行调用 plot_optical 处理 optical.json 文件中 Reflectance 部分的数据，其中 Reflectance 为 optical.json 文件中的部分数据，这里用户可以根据需要自行修改，若需要处理其他光学性质的数据，可替换该参数为 AbsorptionCoefficient 或 ExtinctionCoefficient 或 RefractiveIndex

第6-8行设置x轴y轴的名称以及标签字体大小

第9行为保存图片的名称和格式，这里将数据保存为png格式命名为 optical.png

第10行为显示图片，如果用户运行的环境无法直接显示图片，用户可以将该行注释，之后打开 optical.png 文件查看。

知识点：

Reflectance为光学性质中的一种，用户可以根据自己的需求将该关键词修改为“AbsorptionCoefficient”或”ExtinctionCoefficient”或”RefractiveIndex”，分别对应吸收系数、消光系数和折射率；

执行代码可以得到以下反射率随能量变化的曲线：

7.10. neb过渡态计算数据处理

以快速入门Pt体系的过渡态计算得到的 neb.json 为例：

（1） 输入文件之生成中间构型：

创建 neb_structure.py 文件，具体代码如下：

 1from dspawpy.io.structure import from_dspaw_as
 2from dspawpy.diffusion.neb import NEB,write_neb_structures
 3
 4#导入初态构型
 5init_struct = from_dspaw_as("./structure00.as")
 6#导入末态构型
 7final_struct = from_dspaw_as("./structure06.as")
 8
 9#设置插点个数
10neb = NEB(init_struct,final_struct,5)
11structures = neb.idpp_interpolate()
12
13#修改文件夹存储路径
14write_neb_structures(structures,True,"as","./neb")

知识点：

用户可以根据需要自行修改插点个数，设置为任意插值的序号即可

执行代码可以得到包含7个结构文件的文件夹，其中新生成的中间构型为5个。

（2） 过渡态计算数据处理：

创建 neb.py 文件，具体代码如下：

 1import json
 2from pymatgen.core import Structure
 3from pymatgen.io.vasp import Poscar
 4from dspawpy.io.structure import to_file,from_hzw,from_dspaw_as,from_dspaw_atominfo
 5from dspawpy.diffusion.neb import NEB,write_neb_structures,plot_neb_barrier,plot_neb_converge
 6import matplotlib.pyplot as plt
 7
 8plot_neb_barrier("./neb.json")
 9plt.xlabel('Reaction Coordinate',fontsize=16)
10plt.ylabel('Energy (eV)',fontsize=16)
11plt.tick_params(labelsize = 16)
12plt.savefig("neb_reaction_coordinate.png",img_format="png")
13plt.show()
14
15plot_neb_converge("./neb.json","03")
16plt.savefig("neb_ionic_step.png",img_format="png")
17plt.show()

第1-6行为需要导入的 python 库函数

第8行为调用 plot_neb_barrier 函数处理 json 文件作反应势垒图，这里 ./neb.json 指的时读取当前路径下的 neb.json

第9-11行设置x轴y轴的名称以及标签字体大小

第12行为保存图片的名称和格式，这里将数据保存为png格式命名为 neb_reaction_coordinate.png

第13行为显示图片，如果用户运行的环境无法直接显示图片，用户可以将该行注释，之后打开 neb_reaction_coordinate.png 文件查看

第15行为调用 plot_neb_converge 函数处理 json 文件作 03 构型的弛豫受力图

第16行为保存图片的名称和格式

第17行为显示图片

知识点：

作能量和力在离子弛豫过程中的变化曲线时，03为处理插入的第3个构型的数据，这里用户可以根据需要自行修改，设置为任意插值的序号即可；

执行代码可以得到以下能量随反应路径变化曲线：

7.11. phonon声子计算数据处理

以Au体系的声子能带态密度计算得到的 phonon.json 为例：

（1） 声子能带数据处理：

创建 phonon_bandplot.py 文件，具体代码如下：

 1from pymatgen.phonon.plotter import PhononBSPlotter
 2from dspawpy.io import get_phonon_band_data
 3
 4band_data = get_phonon_band_data("./phonon.json")
 5
 6bsp =  PhononBSPlotter(band_data)
 7plt = bsp.get_plot()
 8
 9plt.savefig("phonon_bandplot.png",img_format="png")
10plt.show()

第1、2行为需要导入的 python 库函数，这里用到了pymatgen中的 PhononBSPlotter 库，以及 dspawpy.io 中的 get_phonon_band_data 函数；

第4行为读取 phonon.json 文件构造 band_data 这个结构体；

第6行为调用 PhononBSPlotter 处理 band_data 数据；

第7行为使用 bsp 下的 get_plot 进行画图；

第9行为保存图片的名称和格式，将数据保存为png格式命名为 phonon_bandplot.png ；

第10行为显示图片，如果用户运行的环境无法直接显示图片，用户可以将该行注释，之后打开 phonon_bandplot.png 文件查看。

执行代码可以得到以下声子能带曲线：

（2） 声子态密度数据处理：

创建 phonon_dosplot.py 文件，具体代码如下：

 1from pymatgen.phonon.plotter import PhononDosPlotter
 2from dspawpy.io import get_phonon_dos_data
 3
 4dos = get_phonon_dos_data("phonon.json")
 5
 6dp = PhononDosPlotter()
 7dp.add_dos("Phonon",dos)
 8plt = dp.get_plot()
 9
10plt.savefig("phonon_dosplot.png",img_format="png")
11plt.show()

执行代码可以得到以下声子态密度曲线：

7.12. aimd分子动力学模拟数据处理

以快速入门 \(H_{2}O\) 分子体系分子动力学模拟得到的 aimd.json 为例：

（1） 分子动力学模拟数据处理：

创建 aimd2pdb.py 文件，具体代码如下：

1import json
2from dspawpy.io.structure import from_dspaw_atominfos,to_pdb
3
4with open("./aimd.json","r") as file:
5    aimd = json.load(file)
6
7structures = from_dspaw_atominfos(aimd["Structures"])
8to_pdb(structures,"aimd.pdb")

第1，2行为需要导入的 python 库函数

第4，5行为需要读取的 json 文件，这里 ./aimd.json 指的是读取当前路径下的 aimd.json ，如果需要读取其他的 json 文件可以自行修改

第7行为调用 from_dspaw_atominfos 处理 structure 的数据

第8行将处理的数据转为 pdb 格式

执行代码可以得到包含体系原子径向分布信息的文件 aimd.pdb ，得到通用轨迹pdb文件后，就可以利用vmd等分子动力学后处理软件进行分析。例如VMD中处理RDFs操作步骤：File - New Molecule - browse - open - Load - Extensions - Analysis - Radial Pair Distribution Function g(r) - Selection 1: element H , selction 2: element O - compute g(r)

8. 常见问题

8.1. License常见错误信息

错误信息： Error code: -10, Get License File Error

错误详情： 没有找到license文件或者没有权限打开

错误信息： Error code: -20, Get License Product Error

错误详情： 获取产品信息出错

错误信息： Error code: -30, Check Local Environment Error

错误详情： 本地硬件信息验证出错

错误信息： Error code: -40, Check Install Path Error

错误详情： 本地安装路径验证出错

错误信息： Error code: -50, Check Validate White User Error

错误详情： 白名单验证出错,当前用户不在白名单内

错误信息： Error code: -60, Check Device Studio license Error

错误详情： 错误的 DS产品信息

错误信息： Error code: -70, Check Device Studio license Error

错误详情： DS可使用产品目录中没有DS-PAW软件

错误信息： Error code: -80, Check Device Studio license Error

错误详情： DS license中 DS-PAW当前版本高于注册版本

错误信息： Error code: -90, Check Device Studio license Error

错误详情： DS license中 DS-PAW超出有效期. 注册有效期

8.2. inputcheck检查输入文件常见错误信息

错误信息： Parameters task error

错误详情： task参数名或参数设置错误

错误信息： Parameters Check error

错误详情： 参数名错误

错误信息： Parameters type error

错误详情： 参数类型设置错误

错误信息： Parameters data error

错误详情： 参数可选值设置问题

错误信息： Parameters size error

错误详情： 参数的维度大小设置问题

错误信息： Parameters range error

错误详情： 参数范围设置问题

错误信息： Structure key error

错误详情： 结构文件中关键字缺失

错误信息： Structure type error

错误详情： 结构文件中关键词设置错误

错误信息： Structure size error

错误详情： 结构文件中数据的大小错误

8.3. error计算过程中常见错误信息

错误信息： E1015/E1011/E1012/E1014/E1005

错误详情： K点读取发生错误

解决方案： 在各个方向增加K点密度（可以尝试增加20%左右，真空方向对应的K点不用增加）或修改cal.smearing和cal.sigma，如设置cal.smearing = 1, cal.sigma = 0.05

错误信息： E1188

错误详情： 使用四面体方法时K点必须大于4个

解决方案： 在各个方向增加K点密度（可以尝试增加20%左右，真空方向对应的K点不用增加）或修改cal.smearing和cal.sigma，如设置cal.smearing = 1, cal.sigma = 0.05

错误信息： E1005

错误详情： k点shift读取错误

解决方案： 尝试使用cal.ksampling= G

错误信息： E1013

错误详情： K点路径读取错误

解决方案： 尝试使用cal.ksampling= G

错误信息： E1022

错误详情： 读取wave.bin中的本征值发生错误

解决方案： 调整两次计算的输入参数，获取正确的wave.bin

错误信息： E1024

错误详情： 当前计算生成的网格大小与rho.bin中读到的不一致

解决方案： 调整两次计算的输入参数，获取正确的rho.bin

错误信息： E1042/E1041

错误详情： ZBRENT算法在搜寻根函数时发生错误

解决方案： 从日志文件中读取报错前一步的结构，生成新的结构文件，之后提高收敛精度scf.convergence继续计算；或修改弛豫算法为relax.methods = QN重新计算

错误信息： E1063

错误详情： 在使用davidson block方法时，执行LAPACKE_zhegv_work函数发生错误

解决方案： 调整cal.methods

错误信息： E1064

错误详情： 在对角化时，执行LAPACKE_zhegv_work函数发生错误

解决方案： 调整cal.methods

错误信息： E1073

错误详情： 并行加速运算发生错误

解决方案： 在提交脚本中关闭-pob命令重新提交任务

错误信息： E1115

错误详情： 晶格体积为0

错误信息： E1186

错误详情： 在求旋转矩阵的逆时发生错误

解决方案： 关闭对称性 sys.symmetry = false

错误信息： E1187

错误详情： 在求旋转矩阵的逆时发生错误

解决方案： 尝试使用cal.ksampling= MP

错误信息： E1226

错误详情： 扩胞过程中发生错误

解决方案： 检查并修改结构文件

错误信息： E1248

错误详情： 在正交化波函数时，LAPACKE_zpotrf_work函数发生错误

解决方案： 将sys.symmetry = false 同时减小 relax.stepRange

错误信息： E1249

错误详情： 在正交化波函数时，LAPACKE _ztrtri _work函数发生错误

错误信息： E2024/E2025

错误详情： 在求旋转矩阵的逆时发生错误

解决方案： 提高对称性判断的精度，如设置sys.symmetryAccuracy = 1.0e-6

错误信息： E3058

错误详情： 赝势读取错误

解决方案： 目前DS-PAW提供72种元素的赝势，暂不支持赝势库以外的元素进行计算

错误信息： Failed to converge the scf calculation

错误信息： 电子步在设置步数内未收敛

解决方案： 可尝试修改算法为cal.methods = 1, 也可尝试加大cal.totalBands

9. 发布说明

9.1. version版本简介

目前DS-PAW2022A软件已上线鸿之微云平台，版本支持结构弛豫（包括固定基矢）、电子结构、力学性质、磁性计算、过渡态（包括SSNEB）、杂化泛函、弹性和频率、分子动力学、强关联计算、范德瓦尔斯修正（包括vdW-DF）、声子计算（包括nac）、加电场、铁电极化(现代极化理论)、能带去折叠、热力学性质、介电张量、压电张量、波恩有效电荷、Bader电荷计算等41种功能。本期主要更新功能序号为 29-41 。

9.2. function功能列表

Plane wave basis

设计功能：使用平面波的基组展开波函数

Projector Augmented Wave pseudopotential(PAW)

设计功能：使用投影缀加平面波赝势

Relaxation

设计功能：结构弛豫计算，支持弛豫原子位置、晶格弛豫、晶格和原子位置弛豫；同时支持固定原子弛豫

Self-consistent

设计功能：自洽场计算

Spin

设计功能：支持无自旋、共线自旋、非共线自旋及自旋轨道耦合体系

Functional

设计功能：支持LDA、GGA(PBE)

Total energy

设计功能：系统总能量计算

Force

设计功能：原子受力计算

Stress

设计功能：应力计算

Band structure

设计功能：能带计算

Projected band structure

设计功能：投影能带计算

Density of states

设计功能：电子态密度计算

Projected density of states

设计功能：电子投影态密度计算

Electron local function

设计功能：电子局域函数计算

Potential

设计功能：势函数计算，支持静电势函数、局域势函数计算

VDW correction

设计功能：支持DFT-D2、DFT-D3范德瓦尔斯修正

Hybrid DFT

设计功能：支持PBE0、HSE03、HSE06杂化泛函修正

DFT+U

设计功能：引入Hubbard U处理强关联体系

Optical properties

设计功能：计算介电常数函数、折射率、反射率、吸收系数、消光系数等

Background charge

设计功能：引入背景电荷来计算带电体系

Dipol correction

设计功能：引入偶极修正来处理真空静电势不平整的问题

Partial charge

设计功能：计算某个指定K点和指定能带的电荷密度

NEB

设计功能：使用CI-NEB的方法搜索过渡态结构

Frequency

设计功能：进行频率计算

Phonon(FD)

设计功能：使用有限位移的方法计算声子能带、声子态密度

Phonon(DFPT)

设计功能：使用线性响应的方法计算声子能带、声子态密度

Elastic

设计功能：进行弹性常数、弹性模量、剪切模量、杨氏模量、泊松比等计算

AIMD

设计功能：第一性原理分子动力学计算

revPBE/PBEsol/RPBE functionals

设计功能：支持revPBE/PBEsol/RPBE交换关联泛函

Nonlocal vdW-DF functionals

设计功能：支持vdw-optPBE/vdw-optB88/vdw-optB86b/vdw-DF/vdw-revPBE/vdw-DF2/vdw-revDF2范德瓦尔斯泛函

Electric field

设计功能：通过引入dipole的方式实现对非周期性方向加电场

Solid state NEB

设计功能：支持体系晶格可变的NEB计算

Ferroelectric polarization

设计功能：使用现代极化理论计算铁电极化值

Band unfolding

设计功能：将超胞的波函数折叠入原胞的布里渊区中，实现能带去折叠功能

Thermal properties

设计功能：通过力常数矩阵计算亥姆霍兹自由能/固定体积热容/熵

Band structure with non-analytical correction

设计功能：声子能带计算中考虑长程库仑相互作用

Dielectric tensor

设计功能：使用线性响应的方法计算介电张量

Piezoelectric tensor

设计功能：使用线性响应的方法计算压电张量

Born effective charge

设计功能：使用线性响应的方法计算波恩有效电荷

Bader charge

设计功能：使用Bader电荷划分方法计算体系中每个原子的价电子数

Constraint relaxation

设计功能：使用约束某个维度的晶格来实现晶格的约束弛豫，常用于二维材料/正交晶系等

索引

应用案例

本章将介绍DS-PAW的各种应用实例，具体包括：如何计算磁矩、如何计算反铁磁材料等；用户通过以下应用教程，将可以更深入了解DS-PAW软件的使用。

\(O\) 原子的磁矩计算

本节中我们将以单个氧原子体系为例来介绍磁性体系的计算。

\(O\) 原子自洽计算之文件准备

由于本次计算的是单个氧原子的磁矩，因此并不需要进行结构弛豫计算，我们直接从自洽计算开始，准备参数文件 scf.in 和结构文件 structure.as ， scf.in 如下：

task = scf
sys.symmetry = false
sys.structure = structure.as
sys.spin = collinear
cal.smearing = 1
cal.sigma = 0.01
cal.kpoints = [1, 1, 1]

本次计算的输入文件中以下几个参数需要重点关注：

sys.symmetry ：本次计算中我们将在关闭对称性的情况下进行计算，因为在DS-PAW中可以通过对称性来减少程序的计算量，但是往往通过对称性优化之后，一些较为细节的东西将会不是特别准确，因此本次计算中将关闭对称性；

sys.spin ：指定体系磁性，因为我们知道单个氧原子的磁矩是 2μB ，这里我们将设置体系的磁性为 collinear 也就是 共线自旋 ；

cal.kpoints ：在前面的章节中我们介绍过对于没有周期性的维度， K点 可以设置为1；

structure.as 文件参考如下：

Total number of atoms
1
Lattice
7.50000000 0.00000000 0.00000000
0.00000000 8.00000000 0.00000000
0.00000000 0.00000000 8.90000000
Cartesian
O  0.00000000 0.00000000 0.00000000

结构文件中我们使用笛卡尔坐标，因此我们设置第七行中坐标类型为 Cartesian ；为了使结构也尽量的减少对称性，手动晶格改为 [7.5，8，8.9] 格子。

run程序运行

准备好输入文件之后，将 scf.in 和 structure.as 文件上传到安装了DS-PAW的环境上，运行 DS-PAW scf.in 命令。

analysis计算结果分析

根据上述的输入文件，计算完成之后将会得到 DS-PAW.log 、 system.json 这2个文件。

使用文本编辑器或者在线显示 json 格式的网页中打开 system.json 文件，具体数据如下：

在 system.json 的 Eigenvalue - Spin - Occupation 部分可得向上自旋的电子占据数为4，向下自旋的电子占据数为2，同时在 MagInfo 部分可得整个体系带有两个 2μB 的磁矩。

\(NiO\) 体系的反铁磁计算

本节中我们将以NiO体系为例介绍如何设置计算反铁磁计算。

\(NiO\) 体系自洽计算

本次案例中同样省去了结构弛豫这个过程，用户重现此案例时，可以自行尝试下进行结构弛豫计算，准备参数文件 scf.in 和结构文件 structure.as ， scf.in 如下：

task = scf
sys.structure = structure.as
sys.spin = collinear
cal.smearing = 4
cal.kpoints = [8, 8, 8]
cal.cutoff = 500

本次计算的输入文件中以下几个参数需要重点关注：

cal.smearing ：本次计算中采用 四面体加布洛赫 的方法，当使用该方法时 sigma 将强制被设置为 0 ；

sys.spin ：指定体系磁性， NiO 为反铁磁材料因此我们需要设置磁性为 collinear 也就是 共线自旋 ；

cal.cutoff ：这里我们设置计算中平面波的截断为 500 ；

structure.as 文件参考如下：

Total number of atoms
4
Lattice
4.16840000 2.08420000 2.08420000
2.08420000 4.16840000 2.08420000
2.08420000 2.08420000 4.16840000
Cartesian Mag
Ni 1.04210000 1.04210000 1.04210000   2.0
Ni 5.21050000 5.21050000 5.21050000   -2.0
O 3.12630000 3.12630000 3.12630000    0
O 7.29470000 7.29470000 7.29470000    0

可以注意到，在结构文件的第七行的 Cartesian 后面加入 Mag 标签，设置了这个标签之后就可以设置每个原子的磁矩，由于我们需要体现反铁磁（整个体系不显示磁矩，单个原子有磁矩），我们建立了四个原子的晶胞，一个Ni原子设置磁矩为 -2 ，另一个Ni原子设置磁矩为 2 ，两个O原子设置磁矩为 0 。

备注

Mag 标签可设置体系中各原子的磁矩。线性自旋计算中添加每个原子的总磁矩即可；自旋轨道耦合计算中需添加x, y, z方向上的磁矩，添加标签为 Mag_x , Mag_y, Mag_z，在对应的原子坐标后添加三个方向上磁矩即可。以NiO体系为例，若进行自旋轨道耦合计算，磁矩设置应如下：

Total number of atoms
4
Lattice
4.16840000 2.08420000 2.08420000
2.08420000 4.16840000 2.08420000
2.08420000 2.08420000 4.16840000
Cartesian Mag_x Mag_y Mag_z
Ni 1.04210000 1.04210000 1.04210000   0.0 0.0 2.0
Ni 5.21050000 5.21050000 5.21050000   0.0 0.0 -2.0
O 3.12630000 3.12630000 3.12630000    0.0 0.0 0.0
O 7.29470000 7.29470000 7.29470000    0.0 0.0 0.0

run程序运行

准备好输入文件之后，将 scf.in 和 structure.as 文件上传到安装了DS-PAW的环境上，运行 DS-PAW scf.in 命令。

analysis自洽计算结果分析

根据上述的输入文件，计算完成之后将会得到 DS-PAW.log 、 system.json 这2个文件。在 system.json 中的 MagInfo 部分可得自洽完成之后总的磁矩为 1e-08 ，几乎为0。

\(NiO\) 体系态密度计算

之后准备进行态密度计算，准备参数文件 pdos.in 结构文件 structure.as 和自洽的二进制电荷密度文件 rho.bin ，此时 pdos.in 如下：

task = dos
sys.structure = structure.as
sys.spin = collinear
cal.iniCharge = ./rho.bin
cal.smearing = 4
cal.kpoints = [16, 16, 16]
cal.cutoff = 500
dos.range = [-10, 10]
dos.EfShift = true
dos.resolution = 0.05
dos.project = true

pdos.in 输入参数介绍：

dos.range ：表示能量计算区间为-10到10；

dos.EfShift ：表示能量计算区间是否按照自洽的费米能级平移，此例中dos的能量计算区间会在得到费米能级后进行平移；

dos.resolution ：表示在能量计算区间内打点的间隔精度。此例能量范围为20 eV，间隔精度为0.05，对应打点数为400；

dos.project ：控制态密度的投影计算，本次计算打开了态密度的投影；

run程序运行

将新建的 pdos.in 文件上传 NiO 的自洽文件夹上，运行 DS-PAW pdos.in 命令。

dos态密度计算结果分析

根据上述的输入文件，计算完成之后将会得到 DS-PAW.log 、 dos.json 这2个文件。使用python工具对 dos.json 进行数据处理画出NiO的t2g和eg轨道，具体操作见辅助工具使用教程，可得不加U得到的态密度图如下所示：

\(NiO\) 态密度

\(NiO\) 体系DFT+U的态密度计算

\(NiO\) 体系DFT+U的态密度计算的计算流程与前面的NiO体系的态密度计算的流程一致，我们只需要在前面的NiO体系的自洽和态密度的计算中都加入DFT+U相关的参数即可：

#correction related
corr.dftu=true
corr.dftuElements =[Ni]
corr.dftuOrbital=[d]
corr.dftuU = [8]
corr.dftuJ = [0.95]

本次计算的输入文件中以下几个参数需要重点关注：

corr.dftu 设置是否打开DFT+U的开关，本例子中设置为true；

corr.dftuElements 设置需要加U的元素，本例中为Ni；

corr.dftuOrbital 设置需要加U的轨道，本例中设置为d轨道；

corr.dftuU 设置具体的U值，本例中设置为8；

corr.dftuJ 设置具体的J值，本例中设置为0.95；

自洽和态密度计算完成之后，得到DFT+U之后的态密度图如下：

\(NiO\) 态密度( DFT+U )

备注

DFT+U可以设置多个元素对应轨道的U值，例如设置Ni的d轨道加U值为8，J值为0.95；O的p轨道加U值为1，J值为0，此时设置如下：corr.dftuElements =[Ni,O] corr.dftuOrbital=[d,p] corr.dftuU = [8,1] corr.dftuJ = [0.95,0]。

\(AuAl\) slab模型功函数计算

本节中我们将以Au和Al的异质结体系为例介绍如何进行功函数计算。

\(AuAl\) slab模型自洽计算之文件准备

本次案例中同样省去了结构弛豫这个过程，用户重现此案例时，可以自行尝试下进行结构弛豫计算，准备参数文件 scf.in 和结构文件 structure.as ， scf.in 如下：

task = scf
sys.structure = structure.as
sys.spin = collinear
cal.smearing = 4
cal.kpoints = [8, 8, 1]
cal.cutoff = 400

io.potential=true
potential.type = hartree

#correction related
corr.dipol = true
corr.dipolDirection = c

本次计算的输入文件中以下几个参数需要重点关注：

io.potential 为自洽中计算势函数的开关；

potential.type 控制势函数保存的类型，计算功函数的时候需要静电势的数据，这里我们设置potential.type = hartree；

corr.dipol 为偶极修正的开关；本例中设置为true；

corr.dipolDirection 本例中设置偶极修正的方向为晶格矢量的c方向；

structure.as文件参考如下：

Total number of atoms
8
Lattice
 4.06384898 0.00000000 0.00000000
 0.00000000 4.06384898 0.00000000
 0.00000000 0.00000000 20.00000000
Cartesian
Au 1.01596223 1.01596223 0.00000000
Au 3.04788672 3.04788672 0.00000000
Au 3.04788672 1.01596224 2.03914999
Au 1.01596224 3.04788672 2.03914999
Al 1.01596224 1.01596224 4.07109999
Al 3.04788673 3.04788673 4.07109999
Al 3.04788673 1.01596224 6.09585000
Al 1.01596224 3.04788673 6.09585000

run程序运行

准备好输入文件之后，将 scf.in 和 structure.as 文件上传到安装了DS-PAW的环境上，运行DS-PAW scf.in命令。

workfunction功函数数据分析

根据上述的输入文件，计算完成之后将会得到 DS-PAW.log 、 system.json 、 potential.json 等多个文件。我们将对 potential.json 文件进行数据处理既可以得到功函数。

使用 Device Studio 可直接对 potential.json 文件处理出图，其操作步骤为：Simulator-->DS-PAW-->Analysis Plot，选择 potential.json 即可，可根据作图要求自定义设置面板参数。DS处理得到的势函数曲线如下所示：

\(AuAl\) 一维势函数图

通过势函数的面内平均图，我们可以得到Au和Al的真空电势分别为5.5 ev 和 4.6 eV

从system.json中读取费米能级为 0.113 eV

根据公式 \(w = -eϕ - E_{F}\) 得到Au和Al构成异质结之后，Au的功函数为 5.387 eV，Al的功函数为 4.487 eV。文献参考值[2]：Au的功函数在 5.10-5.47 eV区间，Al的功函数在 4.06-4.26 eV区间。

\(ISZO\) 体系的电子结构计算

本节中我们将以 \(ISZO\) （ \(In_2Si_2ZnO_8\) ）氧化物半导体为例来介绍如何使用DS-PAW生成无定形态体系及对该体系进行电子结构分析。

\(ISZO\) 无定形态构造之文件准备

晶体材料 \(c-ISZO\) (crystalline phase ISZO)与 \(c-IGZO\) （ \(c-In_2Ga_2Zn_2O_8\) ）为同一类型的半导体氧化物，我们对 \(c-ISZO\) 体系进行分子动力学模拟，在高温下将晶体融化并快速退火，获得无定形态的体系 \(a-ISZO\) (amorphous phase ISZO) 。 \(c-ISZO\) 的晶体结构如下图所示：

\(c-ISZO\) 晶体构型

从晶体结构出发进行分子动力学模拟，分子动力学模拟的过程分为高温融化和退火两步，其中退火过程分两段完成，需准备的输入参数文件分别为 nvt.in 、 quench1.in 、 quench2.in ，高温融化时结构文件为 crystalline.as ， nvt.in 文件如下：

task = aimd

cal.ksamping = G
cal.kpoints = [1,1,1]
cal.cutoff = 520
cal.sigma=0.05
cal.smearing = 1
cal.methods = 1

sys.structure = crystalline.as
sys.functional = PBE
sys.symmetry = false
sys.spin = none

scf.convergence = 1.0e-5
scf.max = 60

aimd.ensemble = NVT
aimd.thermostat = noseHoover
aimd.iniTemp = 3000
aimd.finTemp = 3000
aimd.timeStep = 2
aimd.totalSteps = 3500

io.charge=false
io.wave=false

corr.dftu = true
corr.dftuElements = [Zn,O]
corr.dftuOrbital=[d,p]
corr.dftuU = [5,5]
corr.dftuJ = [0,0]

io.outStep = 1

nvt.in 中以下几个参数需要重点关注：

task : 本次计算为分子动力学计算，设置task为aimd；

aimd.ensemble : 表示分子动力学模拟时选用的系综为NVT系综；

aimd.thermostat : 表示分子动力学模拟时选用的热浴方法为noseHoover；

aimd.iniTemp : 表示分子动力学模拟时的初始温度为3000 K；

aimd.finTemp : 表示分子动力学模拟时的末态温度为3000 K；

aimd.timeStep : 表示分子动力学模拟的时间步长为 2 fs；

aimd.totalSteps : 表示分子动力学模拟的步数为3500步；

io.outStep : 控制paw_tmp/aimd.tmp文件每隔1步续写一次轨迹文件；

高温融化时结构文件 crystalline.as 如下：

Total number of atoms
52
Lattice
 9.05515957 0.00000000 0.00000000
 0.00000000 9.05515957 0.00000000
 0.00000000 0.00000000 9.05515957
 Cartesian
 In 1.13189494 7.92326462 3.39568483
 In 1.13189494 5.65947473 1.13189494
 In 3.39568483 1.13189494 7.92326462
 In 1.13189494 1.13189494 5.65947473
 In 5.65947473 7.92326462 7.92326462
 In 5.65947473 5.65947473 5.65947473
 In 7.92326462 3.39568483 1.13189494
 In 5.65947473 3.39568483 3.39568483
 O 3.45096662 3.45096662 3.45096662
 O 3.45096662 1.07661321 1.07661321
 O 1.07661321 3.45096662 1.07661321
 O 1.07661321 1.07661321 3.45096662
 O 5.71475652 1.18717673 3.34040303
 O 1.18717673 7.86798282 1.18717673
 O 3.34040303 7.86798282 3.34040303
 O 7.86798282 1.18717673 1.18717673
 O 3.45096662 7.97854641 7.97854641
 O 3.45096662 5.60419292 5.60419292
 O 1.07661321 7.97854641 5.60419292
 O 1.07661321 5.60419292 7.97854641
 O 5.71475652 5.71475652 7.86798282
 O 1.18717673 3.34040303 5.71475652
 O 3.34040303 3.34040303 7.86798282
 O 7.86798282 5.71475652 5.71475652
 O 7.97854641 3.45096662 7.97854641
 O 7.97854641 1.07661321 5.60419292
 O 5.60419292 3.45096662 5.60419292
 O 5.60419292 1.07661321 7.97854641
 O 1.18717673 1.18717673 7.86798282
 O 5.71475652 7.86798282 5.71475652
 O 7.86798282 7.86798282 7.86798282
 O 3.34040303 1.18717673 5.71475652
 O 7.97854641 7.97854641 3.45096662
 O 7.97854641 5.60419292 1.07661321
 O 5.60419292 7.97854641 1.07661321
 O 5.60419292 5.60419292 3.45096662
 O 1.18717673 5.71475652 3.34040303
 O 5.71475652 3.34040303 1.18717673
 O 7.86798282 3.34040303 3.34040303
 O 3.34040303 5.71475652 1.18717673
 Si 3.39568483 7.92326462 1.13189494
 Si 3.39568483 5.65947473 3.39568483
 Si 3.39568483 3.39568483 5.65947473
 Si 1.13189494 3.39568483 7.92326462
 Si 7.92326462 7.92326462 5.65947473
 Si 7.92326462 5.65947473 7.92326462
 Si 7.92326462 1.13189494 3.39568483
 Si 5.65947473 1.13189494 1.13189494
 Zn 2.26378988 6.79136966 6.79136966
 Zn 6.79136966 2.26378988 6.79136966
 Zn 6.79136966 6.79136966 2.26378988
 Zn 0.00000000 4.52757977 4.52757977

退火过程分两阶段，第一阶段从3000 K降至800 K，模拟时长为5 ps，quench1.in 文件重点参数如下：

task = aimd
aimd.ensemble = TS
aimd.iniTemp = 3000
aimd.finTemp = 800
aimd.timeStep = 1
aimd.totalSteps = 5000
io.outStep = 20

task : 本次计算为分子动力学计算，设置task为aimd；

aimd.ensemble : TS表示分子动力学模拟时选用退火模拟；

aimd.iniTemp : 表示分子动力学模拟时的初始温度为3000 K；

aimd.finTemp : 表示分子动力学模拟时的末态温度为800 K；

aimd.timeStep : 表示分子动力学模拟的时间步长为 1 fs；

aimd.totalSteps : 表示分子动力学模拟的步数为5000步；

io.outStep : 控制paw_tmp/aimd.tmp文件每隔20步续写一次轨迹文件；

第二阶段从800 K降至0 K，模拟时长为4 ps，quench2.in 文件重点参数如下：

task = aimd
aimd.ensemble = TS
aimd.iniTemp = 800
aimd.finTemp = 0
aimd.timeStep = 1
aimd.totalSteps = 4000
io.outStep = 20

task : 本次计算为分子动力学计算，设置task为aimd；

aimd.ensemble : 表示分子动力学模拟时选用退火模拟；

aimd.iniTemp : 表示分子动力学模拟时的初始温度为800 K；

aimd.finTemp : 表示分子动力学模拟时的末态温度为0 K；

aimd.timeStep : 表示分子动力学模拟的时间步长为 1 fs；

aimd.totalSteps : 表示分子动力学模拟的步数为4000步；

io.outStep : 控制paw_tmp/aimd.tmp文件每隔20步续写一次轨迹文件；

run程序运行

准备好输入文件之后，将 nvt.in 、 quench1.in 、 quench2.in 、 crystalline.as 文件上传到服务器上运行，此次分子动力学模拟过程分3步完成，需建立独立目录进行计算，按照结构弛豫中介绍的方法先执行 DS-PAW nvt.in 得到融化后的构型 nvt.as ，然后以 nvt.as 为初始构型进行退火模拟，依次执行 DS-PAW quench1.in 、 DS-PAW quench2.in 。

analysis分子动力学模拟结果分析

根据上述的输入文件，计算完成之后在各个计算目录下均会得到 DS-PAW.log 、 aimd.json 、 paw_tmp/aimd.tmp 这3个文件。

aimd.json : 分子动力学计算完成之后的 json 数据文件；此时模拟时间内原子位置、体系能量和温度等数据被保存在 aimd.json 中，具体的数据结构详见数据结构解析部分；

paw_tmp/aimd.tmp : 分子动力学计算中的轨迹文件，默认aimd计算中每20个离子步记录一次结构信息；

使用 Device Studio 可直接对 aimd.json 文件处理出图，其操作步骤为：Simulator-->DS-PAW-->Analysis Plot，选择 aimd.json 即可，可根据作图要求自定义设置面板参数。DS可以播放模拟过程中分子的运动轨迹视频。

此次动力学模拟的过程分为3个，高温融化后得到的液态构型 nvt.as 如下图所示：

\(ISZO\) 液态构型

退火到0 K得到的无定形态构型 \(a-ISZO\) 如下所示：

\(a-ISZO\) 无定形态构型

\(a-ISZO\) HSE能带计算文件准备

前面通过分子动力学模拟得到无定形态的 ISZO 模型，现对该模型进行高精度的结构弛豫然后进行HSE能带计算，需要准备的输入文件有 relax.in 、 band.in 和结构文件 structure.as ，其中 relax.in 参数如下：

task = relax

cal.ksamping = G
cal.kpoints = [3,3,3]
cal.cutoff = 520
cal.sigma=0.05
cal.smearing = 1
cal.methods = 1

sys.structure = structure.as
sys.functional = PBE
sys.symmetry = false
sys.spin = none

relax.max = 200
relax.freedom = all
relax.methods = CG

scf.convergence = 1.0e-5
scf.max = 60

io.charge=false
io.wave=false

corr.dftu = true
corr.dftuElements = [Zn,O]
corr.dftuOrbital=[d,p]
corr.dftuU = [5,5]
corr.dftuJ = [0,0]

relax.in 中重要参数如下：

relax.freedom ：控制弛豫的自由度，all表示放开晶胞进行弛豫；

cal.kpoints ：控制弛豫的精度，52个原子的体系KPOINTS设置为3*3*3；

band.in 参数如下：

task = scf

cal.ksamping = G
cal.kpoints = [3,3,3]
cal.cutoff = 520
cal.sigma=0.05
cal.smearing = 1
cal.methods = 1

sys.structure = relax.json
sys.functional = PBE
sys.symmetry = false
sys.spin = none

scf.convergence = 1.0e-5
scf.max = 60

band.kpointsLabel = [G,M,K,P,G]
band.kpointsCoord = [0, 0, 0, 0, 0.5, 0, 0, 0.5, 0.5, 0, 0, 0.5, 0, 0, 0]
band.kpointsNumber = [10,10,10,10]
band.project = true

io.band = true
io.charge=false
io.wave=false

sys.hybrid = true
sys.hybridType = HSE06
sys.hybridAlpha = 0.35

band.in 中重要参数如下：

sys.hybrid ：true表示在能带计算中打开杂化泛函的开关；

sys.hybridType ：表示杂化泛函的方法，此例为HSE06；

sys.hybridAlpha ：表示HSE06杂化方法中的杂化系数，HSE06方法默认对应杂化系为0.25，此例设置为0.35；

run程序运行

准备好输入文件 relax.in 、 band.in 和 structure.as 后，将文件上传到服务器上运行，按照结构弛豫中介绍的方法依次执行 DS-PAW relax.in 、 DS-PAW band.in。

analysis计算结果分析

根据上述的输入文件，计算完成之后将会得到 DS-PAW.log 、 band.json 这2个文件。处理 band.json 的方法同（见2.3节）能带计算的方法，DS处理得到的能带图如下所示，该图表明打开杂化泛函计算后价带与导带之间的带隙变大，从 band.json 中可读出带隙为 3.58 eV，该值与文献[3]得到的结果一致。

\(a-ISZO\) 能带图( HSE )

\(Ta_2O_5\) 体系的电子结构与介电性质计算

本节中我们将以 \(Ta_2O_5\) 为例来介绍如何使用DS-PAW对该体系进行电子结构和介电性质分析。

\(Ta_2O_5\) PBEsol能带计算之文件准备

快速入门 PBEsol泛函计算部分 已对 \(Ta_2O_5\) 体系进行了结构弛豫，得到了合理的结构 relax.json ，本次计算将在该构型的基础上进行PBEsol泛函能带计算，需要准备的输入文件 band.in 如下：

task = scf

sys.structure = relax.json
sys.functional  = PBESOL
sys.spin = none
sys.symmetry = true

cal.ksamping = MP
cal.kpoints = [4,4,8]
cal.cutoff = 520
cal.smearing = 1
cal.sigma = 0.01

scf.convergence = 1e-5
scf.max = 60

io.band = true
band.kpointsLabel = [G,Z,U,X,G]
band.kpointsCoord = [0.00000000,0.00000000,0.00000000,0.00000000,0.00000000,0.50000000,0.50000000,0.00000000,0.50000000,0.50000000,0.00000000,0.00000000,0.00000000,0.00000000,0.00000000]
band.kpointsNumber = [20,20,20,20]

band.in 中重要参数如下：

io.band ：true表示自洽计算中打开能带计算的开关，以及与能带计算相关的参数设置；

sys.functional ：表示选择泛函类型，此例为PBEsol泛函；

run程序运行

准备好输入文件 band.in 和 relax.json 后，将文件上传到服务器上运行，按照结构弛豫中介绍的方法执行 DS-PAW band.in 。

analysis计算结果分析

根据上述的输入文件，计算完成之后将会得到 DS-PAW.log 、 band.json 这2个文件。处理 band.json 的方法同（见2.3节）能带计算的方法，DS处理得到的能带图如下所示，该图表明使用 PBEsol 泛函后价带与导带之间的带隙变大，从 band.json 中可读出该值为 2.11 eV，该值与文献[1]得到的结果一致。

\(Ta_2O_5\) 声子能带图( HSE )

\(Ta_2O_5\) 光频介电常数计算之文件准备

快速入门 PBEsol泛函计算部分 已对 \(Ta_2O_5\) 体系进行了结构弛豫，得到了合理的结构 relax.json ，本次计算将在该构型的基础上进行光频介电常数计算，需要准备的输入文件 optical.in 如下：

task = scf

sys.structure = relax.json
sys.functional  = PBESOL
sys.spin = none
sys.symmetry = true

cal.ksamping = G
cal.kpoints = [4,4,8]
cal.cutoffFactor = 1.5
cal.cutoff = 520
cal.smearing = 1
cal.sigma = 0.01

scf.convergence = 1e-5
scf.max = 60

io.optical = true

optical.in 中重要参数如下：

io.optical ：true表示打开自洽计算中光学计算的开关；

sys.functional ：表示选择泛函类型，此例为PBEsol泛函；

run程序运行

准备好输入文件 optical.in 和 relax.json 后，将文件上传到服务器上运行，按照结构弛豫中介绍的方法执行 DS-PAW optical.in 。

analysis计算结果分析

根据上述的输入文件，计算完成之后将会得到 DS-PAW.log 、 optical.json 这2个文件。处理 optical.json 的方法同（见2.12节）光学性质计算的方法，对介电常数矩阵的虚部数据进行处理，得到如下所示图：

\(Ta_2O_5\) 介电常数虚部

分析图中峰强可得， z 分量的主峰要明显高于 x 和 y 分量的主峰，x 和 y 的强度则接近一致。该结果与文献[1]报道的结论一致。

Device Studio 处理 optical.json 还可得到光学性质系列图谱，如下所示为折射指数与消光系数随能量变化的图谱:

\(Ta_2O_5\) 线性光学性质

从 Refractive Index - Phonon energy 图可得 \(Ta_2O_5\) 的折射指数约为 2.72 ， 从 Extinction Coefficient - Phonon energy 图可得 \(Ta_2O_5\) 的消光系数在能量为 7.0 eV 和 11.5 eV 时出现峰值。该值与文献[1]得到的结果一致。

\(Ta_2O_5\) 静态介电常数计算之文件准备

快速入门 PBEsol泛函计算部分 已对 \(Ta_2O_5\) 体系进行了结构弛豫，得到了合理的结构 relax.json ，本次计算将在该构型的基础上进行静态介电常数计算，需要准备的输入文件 epsilon.in 如下：

task = epsilon

sys.structure = relax.json
sys.functional  = PBESOL
sys.spin = none
sys.symmetry = true

cal.ksamping = G
cal.kpoints = [4,4,8]
cal.cutoffFactor = 1.5
cal.cutoff = 520
cal.smearing = 1
cal.sigma = 0.01

scf.convergence = 1e-5
scf.max = 60

epsilon.in 中重要参数如下：

task ：epsilon对应静态介电常数的计算；

sys.functional ：表示选择泛函类型，此例为PBEsol泛函；

run程序运行

准备好输入文件 epsilon.in 和 relax.json 后，将文件上传到服务器上运行，按照结构弛豫中介绍的方法执行 DS-PAW epsilon.in 。

analysis计算结果分析

根据上述的输入文件，计算完成之后将会得到 DS-PAW.log 、 epsilon.json 、 epsilon.txt 这3个文件。从 epsilon.txt 文件中可获取如下数据：

Electronic Part

5.581463

0.000000

0.000000

0.000000

5.185986

0.000000

0.000000

0.000000

7.040952

Ionic Part

47.993477

0.000000

0.000000

0.000000

40.562573

0.000000

0.000000

0.000000

51.72549

Total Part

53.574940

0.000000

0.000000

0.000000

45.748559

0.000000

0.000000

0.000000

58.7666200

由上表可得总的介电常数及离子、电子贡献部分，其数值与文献[1]报道的结果一致。

锂电体系 \(Li^+\) 迁移的过渡态计算

本节我们将以 \(Li_xNi_6Co_2Mn_2\) ( \(NCM-622\) )体系为例介绍如何建立体相及表面模型，以 \(LiNi_{0.89}Co_{0.055}Mn_{0.055}O_2\) ( \(NCM-89\) ) 体系为例介绍如何进行 \(Li^+\) 迁移的过渡态计算。

\(NCM-622\) 体相建模

构造 \(NCM-622\) 体相模型可大致分为三步：建立超胞 --> 替换过渡金属原子 --> 删除Li原子，具体操作如下图所示：

\(NCM-622\) 体相模型建模步骤

在 \(LiCoO_2\) 原胞（mp-22526_conventional）的基础上进行扩胞操作 --> 根据电池组分Ni:Co:Mn = 6:2:2 用Ni、Mn原子替换Co原子 --> 删除Li原子以构造不同脱锂状态的电池。

备注

建模过程中处理边界原子的方法：全选晶胞内所有原子进行约0.3埃的移动（工具栏move按钮），然后将盒子外所有的原子移动到周期内（工具栏wrap按钮）

替换Co为其他过渡金属元素时，应保证TM(transition metal)原子所在方向上原子比例Ni:Co:Mn = 6:2:2

从底部到表面的四层原子中Li含量4:2:1:1，脱Li顺序：Ni>Co>Mn

\(NCM-622\) 表面建模

以构造 104 表面为例，构造 \(LiCoO_2\) 的表面模型可大致分为四步：切晶面构造slab模型 --> 添加真空层 --> 识别原胞并转正交胞 --> 建立超胞 ，具体操作如下图所示：

\(NCM-622\) 表面模型建模步骤

以上建立的是 \(LiCoO_2\) 体系的表面模型，建立 \(NCM-622\) 表面模型需参照上节体相模型的建立过程完成后续的原子替换与原子删除步骤，即完成 --> 根据电池组分Ni:Co:Mn = 6:2:2 用Ni、Mn原子替换Co原子 --> 删除Li原子以构造不同脱锂状态的电池。

备注

建模过程中处理边界原子的方法：全选晶胞内所有原子进行约0.3埃的移动（工具栏move按钮），然后将盒子外所有的原子移动到周期内（工具栏wrap按钮）。

Device Studio可快速完成切面操作，选中原胞，点击菜单栏build，选择Surface/Slab，填入Miller指数，本例104晶向对应h、k、l分别为0、-1、4，建立slab模型需勾选Slab复选框。

添加真空层只需修改z方向上的晶胞长度，点击工具栏上的convert_to_crystal按钮，双击z方向需修改的数据，键入所需真空方向的长度即可。

过渡态计算时，若体系原子数多计算量大，根据经验可通过固定内层原子减小计算量。

\(NCM-89\) 体系 \(Li^+\) 迁移的过渡态计算之初末态优化

因 \(NCM-622\) 体系原子数多，计算量大，此例将以 \(NCM-89\) 体系为例进行过渡态计算。建立体相模型可大致分为两步：建立超胞 --> 替换过渡金属原子，扩胞参数为 2*3*1 ，扩胞得到72个原子的晶胞，替换两个Co原子分别为Ni原子和Mn原子，得到过渡金属原子的比例为 Ni:Co:Mn = 0.89: 0.055: 0.055，晶胞如下图所示，

\(NCM-89\) 晶胞构型

在该晶胞的基础上构建过渡态的初末态，Li离子在面内发生迁移，结构文件 strutureini.as 和 struturefin.as 分别如下所示：

structureini.as 文件参考如下：

Total number of atoms
70
Lattice
 5.68580008 0.00000000 0.00000000
 -4.26435006 7.38607095 0.00000000
 0.00000000 0.00000000 14.14560032
Cartesian
Co -1.42140731 5.75894172 11.82162833
Li 0.05141019 1.71149236 9.43669112
Li -4.25134272 7.36354156 14.12315111
Li -1.42283209 2.50501970 0.00637844
Li 2.82830170 4.90294234 14.12009296
Li -1.43436239 7.36856180 14.12554331
Li 1.41858313 2.49073192 0.01584751
Li 0.01263630 4.90296511 14.11955844
Li 1.40919709 0.83317917 4.72116406
Li 0.02193733 3.32831194 4.73568137
Li -1.41773569 5.70583311 4.69246891
Li 4.27019593 0.81946885 4.73042194
Li 2.82684106 3.32466022 4.74289680
Li 1.42403169 5.72337319 4.69688781
Li -1.41766114 4.11442871 9.43586920
Li -2.88973966 6.46971963 9.42279858
Li 0.06017138 6.46878676 9.42382685
Mn -1.42523032 4.10649820 2.34764390
Ni 0.00948325 1.64490211 2.32185120
Ni -2.84914896 6.56487138 2.38862784
Ni 2.84191459 1.64685786 2.32097778
Ni 1.41892764 4.10446580 2.34981193
Ni 0.00514320 6.56610772 2.38903856
Ni 1.41625526 0.81132671 11.82998580
Ni 0.01252862 3.30250543 11.73267186
Ni 4.26384125 0.81795681 11.81309739
Ni 2.83781240 3.30057349 11.73907390
Ni 1.42033942 5.74612183 11.79404193
Ni 0.00243352 -0.00075612 7.06806937
Ni 4.26227377 2.44429754 7.04385780
Ni 2.83678348 4.91300478 7.10157450
Ni -1.42081748 7.37888155 7.08040302
Ni 1.42017190 2.46015953 7.07187647
Ni 0.00503720 4.91364052 7.10010621
O 1.45054980 7.29490704 3.45710055
O -1.39556232 2.43080260 3.37027301
O -2.77367702 4.82340224 3.49010418
O -1.40053708 7.29140782 3.40969861
O 1.43548260 2.33461980 3.36829801
O -0.07069647 4.83832809 3.48567922
O -0.01200294 0.10832266 10.75763655
O -1.43553605 2.56786488 10.70356670
O -2.81878586 5.07316114 10.76502168
O 2.82742042 0.03391080 10.82712318
O 1.42189883 2.51968727 10.75299407
O -0.02298580 5.08086413 10.75709914
O 1.43130266 0.68912533 8.14926813
O -0.02578495 3.13127194 8.09706690
O -1.40949847 5.61974970 8.15609379
O 4.27424750 0.68366581 8.12498488
O 2.87457023 3.13922033 8.09908907
O 1.43041979 5.66232970 8.09826088
O 1.41171937 0.92187887 1.26363582
O -0.07579703 3.38588030 1.20463740
O -1.45872030 5.77533588 1.33095379
O 4.25441424 0.91077709 1.30563666
O 2.90856059 3.37673765 1.20265800
O 1.40091567 5.88119724 1.34528659
O -0.00339989 1.54336238 12.85493436
O -1.40524919 4.07423907 12.75680141
O -2.86197432 6.43595027 12.89845499
O 2.86269599 1.53777168 12.86475291
O 1.43478074 3.99209110 12.81792390
O 0.01407279 6.44558660 12.88927831
O 0.00346480 1.75659993 5.98466610
O -1.43234390 4.22834198 6.04255473
O -2.84436212 6.68800493 6.02282991
O 2.82700231 1.76572017 5.98380139
O 1.40959070 4.22817224 6.01202301
O -0.01238693 6.69174777 6.00737646

structurefin.as 文件参考如下：

Total number of atoms
70
Lattice
 5.68580008 0.00000000 0.00000000
 -4.26435006 7.38607095 0.00000000
 0.00000000 0.00000000 14.14560032
Cartesian
Co -1.42272290 5.75131210 11.78868042
Li 1.37908756 4.04717238 9.43366592
Li -4.24443547 7.36379855 14.11644448
Li -1.41003575 2.50177734 0.01408523
Li 2.83718326 4.90369430 14.12902287
Li -1.44113349 7.36902539 14.12174314
Li 1.40377754 2.49017988 0.02394378
Li 0.01246817 4.90322611 14.12116258
Li 1.40139093 0.82965831 4.73048378
Li -0.00262301 3.33509335 4.75117997
Li -1.42852108 5.70761994 4.69423632
Li 4.28789469 0.82489152 4.74154528
Li 2.83318446 3.32435369 4.74843955
Li 1.43036953 5.73638732 4.70541234
Li -1.36959895 4.02993754 9.41286110
Li -2.89625754 6.61299488 9.43687835
Li 0.04548895 6.61037491 9.43112947
Mn -1.42452204 4.10484615 2.34874400
Ni 0.01117845 1.64390982 2.32094030
Ni -2.85486265 6.56475027 2.38592883
Ni 2.84157610 1.64281618 2.32070086
Ni 1.41989849 4.10201658 2.35013976
Ni 0.00061020 6.56702749 2.38600980
Ni 1.41218623 0.82166867 11.79516050
Ni 0.00392433 3.29047613 11.75291510
Ni 4.26869599 0.82526904 11.78752226
Ni 2.84359302 3.30512203 11.79167288
Ni 1.41708938 5.74611486 11.80459362
Ni 0.00282893 0.00026394 7.08471646
Ni 4.26971738 2.44886907 7.09884508
Ni -2.83864473 4.91703626 7.08037778
Ni -1.41894646 7.36907188 7.04992272
Ni 1.41567781 2.44606386 7.09825813
Ni 0.00722230 4.92302439 7.06755364
O 1.44652286 7.29856675 3.45295531
O -1.38971320 2.43328165 3.37664250
O -2.77433742 4.82343646 3.48431647
O -1.40349335 7.29538253 3.40386871
O 1.43966082 2.32967245 3.36616834
O -0.07059719 4.84338927 3.48118891
O -0.00407554 0.06460861 10.80030127
O -1.45985048 2.58614396 10.74640137
O -2.85830373 5.06521305 10.74214620
O 2.83387826 0.01808953 10.79108439
O 1.45915161 2.58109832 10.75562323
O 0.00526805 5.06877188 10.71304860
O 1.46373449 0.67618837 8.11535811
O 0.00793653 3.20121776 8.10288278
O -1.39998910 5.61423956 8.12469487
O 4.23438094 0.66775461 8.11268057
O 2.85025229 3.14793228 8.15091835
O 1.43821880 5.60877504 8.14463438
O 1.40584981 0.91706388 1.25444163
O -0.07410411 3.38402200 1.20742894
O -1.46394009 5.77357624 1.32522503
O 4.25081416 0.91088331 1.30317492
O 2.91011742 3.36664083 1.20403556
O 1.39670863 5.88028366 1.34094161
O -0.00764590 1.54240268 12.85517484
O -1.40407120 4.09042519 12.77009209
O -2.84444236 6.43082458 12.88323419
O 2.84987506 1.52753451 12.84055568
O 1.41456133 4.01307537 12.83700413
O -0.00182892 6.44001443 12.86684710
O -0.00819392 1.78027569 6.00690644
O -1.43448724 4.22587467 6.01969278
O -2.85425938 6.69026096 6.00246303
O 2.83716260 1.76301157 6.01247816
O 1.41896611 4.21812904 6.01179620
O 0.01184552 6.67752576 6.00100551

对初末态进行弛豫计算，弛豫计算的输入文件 relax.in 文件参考如下：

task = relax
sys.structure = structure.as
sys.symmetry = false
sys.functional = PBE
sys.spin = collinear
scf.convergence = 1.0e-6
scf.max = 300

relax.convergence = 0.05
relax.max = 300
relax.freedom = atom

cal.sigma = 0.05
cal.methods = 1
cal.smearing = 1
cal.ksamping = G
cal.kpoints = [1, 1, 1]

corr.VDW=true
corr.VDWType= D3G

corr.dftu = true
corr.dftuElements = [Ni,Co,Mn]
corr.dftuOrbital = [d,d,d]
corr.dftuU = [5.96,5.0,5.1]

io.wave = false
io.charge = false
io.magProject = true

relax.in 重点输入参数介绍：

- task : 本次计算为弛豫计算，设置task为relax；

- scf.convergence : 结构弛豫的电子收敛精度应与过渡态计算的电子收敛精度保持一致，过渡态计算时该参数建议设置为1.0e-6;

- scf.max ：若待优化体系原子数多且磁性复杂，建议放开电子收敛步数到300，观察优化前几步的电子收敛情况，若构型正确一般第2或第3个离子步便能正常收敛，若前5个离子步都无法正常收敛建议检查构型及磁矩设置;

- relax.convergence : 结构弛豫的离子收敛精度，此例设置0.05，表示以原子最大受力小于0.05 eV/Å 作为收敛判据，0.05为可接受的收敛精度，若需更高收敛精度，可将该值设置0.02或0.01；

- relax.max ：若待优化体系原子数多且磁性复杂，建议放开离子收敛步数到300，300步结束未收敛可根据末态构型和原子最大受力判断有无续算的必要，用户可根据实际体系适当加大该值；

- relax.freedom : 弛豫的自由度设置，此例只优化晶胞中原子位置，不优化晶胞大小；

- corr.VDW : 体系中需考虑范德华修正，将该参数设置为true;

- corr.VDWType : 范德华修正的方法为D3G；

- corr.dftu : 引入DFT+U校正，将该参数设置为true;

- corr.dftuElements : 设置体系中需进行DFT+U校正的元素；

- corr.dftuOrbital : 设置体系中需进行DFT+U校正的元素所对应的加U轨道，各轨道顺序应与corr.dftuElements中元素名顺序保持一致，该例加U轨道为各元素的d轨道；

- corr.dftuU : 设置体系中需进行DFT+U校正的元素的+U数值，各+U数值顺序应与corr.dftuElements中元素名顺序保持一致，该例Ni、Co、Mn的+U校正值分别为5.96、5.0和5.1；

- io.magProject : 对磁性体系应输出各原子的磁矩大小，打开该参数，磁矩信息会写入system.json文件，查找“Mag”关键词即可；

对初末态弛豫得到最稳定构型，在初末态构型的基础上插点进行过渡态计算。

备注

初末态结构弛豫时的电子及离子收敛精度应与过渡态计算的精度保持一致。

因该体系为反铁磁体系，弛豫结束应检查各过渡金属的磁矩是否正确，在体系较大时建议根据经验设置初始磁矩以减小计算量。

结构弛豫计算考虑了范德华校正，引入了hubbard U来处理电子间存在的强烈在位库仑相互作用。

\(NCM-89\) 体系 \(Li^+\) 迁移的过渡态计算之确定反应路线

得到过渡态反应的初末态后，需进一步确定反应路径，A. Van der Venz等人[4]对锂离子迁移的两种方式：直线迁移(Oxygen dumbbell hop, ODH)和绕中间氧原子进行迁移(Tetrahedral site hop, TSH)有过研究报道，报道显示TSH迁移方式所需的势垒更低，此例中选取的即为该迁移方式，设计的迁移路径示意图如下图所示：

\(NCM-89\) 过渡态计算锂迁移路径

备注

本例选取的锂离子迁移路径为绕中间氧原子迁移，即文献报道的TSH路径(中间氧原子被删除以展示锂离子完整迁移路径)，该路径对应的反应势垒更低。

在确定预设反应路径的基础上，根据初末态原子及中间氧原子的坐标进行简单计算便能得到中间体系反应原子的坐标。

除反应原子外，过渡态迁移路径上其他的Li原子应删除。

\(NCM-89\) 体系 \(Li^+\) 迁移的过渡态计算参数

如上图所示，过渡态反应插点数为3，过渡态计算的输入文件 neb.in 文件参考如下：

task = neb

sys.structure = structure.as
sys.functional  = PBE
sys.spin = collinear
sys.symmetry = false

cal.ksamping = G
cal.kpoints = [1,1,1]

cal.methods = 1
cal.smearing = 1
cal.sigma = 0.05

scf.mixType = Broyden
scf.mixBeta = 0.4
scf.convergence = 1e-6
scf.max = 300

neb.springK = 5
neb.images = 5
neb.iniFin = true
neb.method = QM
neb.convergence = 0.05
neb.stepRange = 0.01
neb.max = 300

corr.VDW = true
corr.VDWType = D3G
corr.dftu = true
corr.dftuElements = [Co,Mn,Ni]
corr.dftuOrbital = [d,d,d]
corr.dftuU = [5,5.1,5.96]
corr.dftuJ = [0,0,0]

io.wave = false
io.charge = false
io.magProject = true

neb.in 重点输入参数介绍：

- task : 本次计算为过渡态计算，设置task为neb；

- scf.max : 若待优化体系原子数多且磁性复杂，建议放开电子收敛步数到300，观察优化前几步的电子收敛情况，若构型正确一般第2或第3个离子步便能正常收敛，若前5个离子步都无法正常收敛建议检查构型及磁矩设置；

- scf.convergence : neb计算建议设置较高电子收敛精度，尤其当neb.method参数设置为LBFGS时，电子收敛精度设置为1.0e-6可加大收敛的可能性；

- neb.iniFin : neb计算过渡态搜寻结束是否对初末态进行自洽计算，此例设置为true;

- neb.images : neb计算插点数设置为5，在计算资源足够的情况下建议调用节点数设置为images数目的整数倍，此例可调用5个节点，分配资源时每个image分配一个节点，避免一个计算在多节点之间通讯带来的资源浪费，退之至少需保证该任务调用总核数为images的整数倍；

- neb.method : neb计算较为复杂，经系列测试给出如下建议：不优化晶格时优先选用QM算法，优化晶格时优先选用QM2算法，选择其他算法如LBFGS进行优化可能会出现受力波动、不收敛的情况，此时建议将步长设置为0.01，即neb.stepRange = 0.01，同时提高电子收敛精度，如设置scf.convergence = 1.0e-6；

- neb.convergence : 过渡态优化的离子收敛精度，此例设置0.05，表示以原子最大受力小于0.05 eV/Å 为收敛判据，0.05为可接受的收敛精度，若需更高收敛精度，可将该值设置0.02或0.01；

- neb.max : 若过渡态计算体系原子数多且磁性复杂，建议放开离子收敛步数到300，300步结束未收敛可根据末态构型和最大剪切力判断有无续算的必要，用户可根据实际体系适当加大该值；

同时加U参数与弛豫计算保持一致，此处不加以赘述。

备注

此例过渡态计算的插点数为5，在确定预设反应路径的基础上，根据初末态原子及中间氧原子的坐标进行简单计算便能得到中间体系反应原子的坐标。

过渡态计算考虑了范德华校正，引入了hubbard U来处理电子间存在的强烈在位库仑相互作用。

\(NCM-89\) 体系 \(Li^+\) 迁移的过渡态计算结果分析

过渡态计算完成之后使用 Device Studio 可直接对最外层生成的 neb.json 文件处理出图，其操作步骤为：Simulator-->DS-PAW-->Analysis Plot，选择 neb.json 即可，可根据作图要求自定义设置面板参数。DS处理得到的NCM-89过渡态反应势垒图如下所示：

\(NCM-89\) 过渡态计算锂迁移反应势垒

根据以上反应势垒图可知， \(NCM-89\) 体系在沿TSH反应路径迁移时，反应势垒约为 0.275 eV，该值与文献报道值[5]一致。

\(Ca_2N\) 体系吸附计算

此节研究体系为 \(Ca_2N\) 层状结构，以吸附 \(Na^+\) 为例介绍如何进行吸附能的计算、以及吸附离子在表面进行扩散的过渡态计算。

\(Ca_2N\) 体系吸附能计算之模型建立

\(Ca_2N\) 体系吸附钠离子的吸附能计算大致分为三个步骤：

1. 建立2*2*1的 \(Ca_2N\) 单层超胞模型 --> 在其基础上先进行结构弛豫计算 --> 进行自洽计算得到单层 \(Ca_2N\) 的内能；

2. 在 \(Ca_2N\) 模型中添加吸附原子 --> 进行结构弛豫 --> 进行自洽计算得到吸附模型的内能；

3. 优化Na原子的单胞 --> 自洽计算得到Na原子的内能。

\(Ca_2N\) 单层超胞模型如下图所示：

单层氮化钙基底模型

structure.as 文件参考如下：

Total number of atoms
12
Lattice
 7.21811247 0.00000000 0.00000000
 -3.60905623 6.25106877 0.00000000
 0.00000000 0.00000000 19.23708725
Cartesian
Ca 0.30075466 0.52092236 8.36314405
Ca -1.50377344 3.64645674 8.36314405
Ca 3.90981090 0.52092236 8.36314405
Ca 2.10528278 3.64645674 8.36314405
Ca 0.30075466 2.60461201 10.87394319
Ca -1.50377344 5.73014639 10.87394319
Ca 3.90981090 2.60461201 10.87394319
Ca 2.10528278 5.73014639 10.87394319
N 2.10528283 1.56276719 9.61854362
N 0.30075466 4.68830157 9.61854362
N 5.71433907 1.56276719 9.61854362
N 3.90981095 4.68830157 9.61854362

\(Ca_2N\) 单层超胞吸附模型如下图所示：

单层氮化钙基底吸附Na离子模型

structure.as 文件参考如下：

Total number of atoms
13
Lattice
 7.21811247 0.00000000 0.00000000
 -3.60905623 6.25106877 0.00000000
 0.00000000 0.00000000 19.23708725
Cartesian
Ca 0.30075677 0.52092106 8.36046309
Ca -1.50377150 3.64645562 8.36046304
Ca 3.90981295 0.52092122 8.36046300
Ca 2.10528499 3.64645559 8.36046305
Ca 0.30075262 2.60461313 10.87662397
Ca -1.50377567 5.73014752 10.87662386
Ca 3.90980878 2.60461334 10.87662414
Ca 2.10528087 5.73014749 10.87662406
N 2.10528281 1.56276719 9.61854380
N 0.30075468 4.68830156 9.61854380
N 5.71433905 1.56276717 9.61854380
N 3.90981092 4.68830157 9.61854378
Na 5.71433905 1.56276717 14.12021416

备注

文献报道了7个不同吸附位点的吸附能，此例选取位点为吸附能最小的位点，该位点位于氮原子的正上方，z方向上与氮原子的距离为4.5埃。

\(Ca_2N\) 体系吸附能计算流程及参数

建立好 \(Ca_2N\) 层状结构模型 、 \(Ca_2N\) 层状结构吸附钠原子模型 及 钠原子单胞模型 后，即可开始吸附能的计算，首先完成3个体系的结构弛豫计算，需准备输入文件 relax.in , 参数设置如下所示：

task = relax
sys.structure = structure.as
sys.symmetry = false
sys.functional = PBE
sys.spin = none
scf.convergence = 1.0e-6
scf.max = 300

relax.convergence = 0.02
relax.max = 300
relax.freedom = atom

cal.cutoff = 600
cal.sigma = 0.05
cal.methods = 1
cal.smearing = 1
cal.ksamping = G
cal.kpoints = [6, 6, 1]

io.wave = false
io.charge = false
io.magProject = true

corr.VDW = true
corr.VDWType = D3BJ

relax.in 重点输入参数介绍：

task : 本次计算为弛豫计算，设置task为relax；

cal.kpoints : 结构弛豫k点采样选择6*6*1；

corr.VDW : 打开范德华修正的开关；

corr.VDWType : 范德华修正的方法为D3BJ；

结构弛豫结束，增大k点采样进行自洽计算，需准备输入文件 scf.in , 参数设置参考如下：

task = scf
sys.structure = relax.json
sys.symmetry = false
sys.functional = PBE
sys.spin = none
scf.convergence = 1.0e-6
scf.max = 300

cal.cutoff = 600
cal.sigma = 0.05
cal.methods = 1
cal.smearing = 1
cal.ksamping = G
cal.kpoints = [18, 18, 1]

io.wave = false
io.magProject = true

io.charge = false

corr.VDW = true
corr.VDWType = D3BJ

scf.in 重点输入参数介绍：

task : 本次计算为自洽计算，设置task为scf；

cal.kpoints : 自洽计算加大k点采样，k设置为18*18*1；

corr.VDW : 打开范德华修正的开关；

corr.VDWType : 范德华修正的方法为D3BJ；

备注

自洽计算应在结构弛豫的基础上加大k点采样，以获取体系准确的能量。

表面吸附计算时，吸附体系及被吸附分子均要考虑范德华作用，结构弛豫和自洽计算时需加入范德华修正参数。

\(Ca_2N\) 吸附能计算之结果分析

以上建立了三个模型，吸附能 \(E_{ad}\) 可由这三个体系的能量求得，其具体表达式写作：

\[E_{ad} = E_{Ca_2N@Na} - E_{Ca_2N} - E_{Na}\]

其中 \(E_{Ca_2N@Na}\) 对应吸附基底和吸附分子的总能量， \(E_{Ca_2N}\) 对应吸附基底的总能量，\(E_{Na}\) 对应一个Na原子的总能量。带入自洽计算的结果，计算得到的吸附能 \(E_{ad}\) 值为 -0.271 eV ，与文献报道值

一致[6]。

\(Ca_2N\) 吸附模型之过渡态计算

文献表明Na离子在吸附表面扩散的路径有3种，本节建立4*4*1的 \(Ca_2N\) 单层超胞模型，以其中一条扩散路径为例进行Na离子扩散的过渡态计算，扩散路径如下图所示：

Na离子扩散路径

过渡态计算前面已介绍过多个案例，步骤大致分为两步：

1. 对反应初末态进行结构弛豫，得到稳定的初末态构型；

2. 在稳定初末态构型的基础上进行插点，此例应注意预设反应路径不是简单的线性或非线性插点，根据初末态原子及中间氮原子的坐标进行简单计算便能得到中间体系反应原子的坐标。

需要准备的输入文件有 relax.in 、 neb.in 及各结构文件 structure.as，其中结构弛豫的输入参数与吸附能计算参数大致相同，注意需添加范德华修正参数，过渡态计算输入参数 neb.in 如下所示：

task = neb
sys.structure = structure.as
sys.symmetry = false
sys.functional = PBE
sys.spin = none
scf.convergence = 1.0e-6
scf.max = 300

neb.convergence = 0.02
neb.method = QM
neb.images = 3
neb.springK = 5
neb.max = 300
neb.iniFin = true

cal.cutoff = 600
cal.sigma = 0.05
cal.methods = 1
cal.smearing = 1
cal.ksamping = G
cal.kpoints = [3, 3, 1]

io.wave = false
io.charge = false
io.magProject = true

corr.VDW = true
corr.VDWType = D3BJ

neb.in 重点输入参数介绍：

task : 本次计算为过渡态计算，设置task为neb；

neb.images : neb计算插点数设置为3，一般反应路径在2.8埃左右插3个点就能搜寻到理想的过渡态，若无法获得理想的势垒图可考虑加大插点数目；

neb.method : neb计算较为复杂，经测试QM算法一般能顺序收敛，选择其他算法如LBFGS进行优化可能会出现受力波动、不收敛的情况，此时建议将步长设置为0.01，即neb.stepRange = 0.01，同时提高电子收敛精度，如设置scf.convergence = 1.0e-6；

neb.convergence : 过渡态优化的离子收敛精度，此例设置0.05，表示以原子最大受力小于0.05 eV/Å 为收敛判据，0.05为可接受的收敛精度，若需更高收敛精度，可将该值设置0.02或0.01；

corr.VDW : 打开范德华修正的开关；

corr.VDWType : 范德华修正的方法为D3BJ；

\(Ca_2N\) 吸附模型过渡态计算之结果分析

过渡态计算完成之后使用 Device Studio 可直接对最外层生成的 neb.json 文件处理出图，其操作步骤为：Simulator-->DS-PAW-->Analysis Plot，选择 neb.json 即可，可根据作图要求自定义设置面板参数。DS处理得到的 \(Ca_2N\) 吸附体系中Na离子在表面扩散的反应势垒图如下所示：

Na离子扩散势垒图

根据以上反应势垒图可知， \(Ca_2N\) 吸附体系中Na离子在表面沿该路径扩散时，反应势垒约为 0.09 eV，该值与文献报道值[6]一致。

ref参考文献

[1] Valencia-Balvín C, Pérez-Walton S, Osorio-Guillén J M. First principles calculations of the electronic and dielectric properties of λ-Ta2O5[J]. TecnoLógicas, 2018, 21(43): 43-52.

[2] Haynes W M, Lide D R, Bruno T J. CRC handbook of chemistry and physics[M]. CRC press, 2016.

[3] Zhang Z, Guo Y, Robertson J. Role of the third metal oxide in In–Ga–Zn–O4 amorphous oxide semiconductors: Alternatives to gallium[J]. Journal of Applied Physics, 2020, 128(21

[4] Van der Ven A, Ceder G. Lithium diffusion in layered Li x CoO2[J]. Electrochemical and Solid-State Letters, 2000, 3(7): 301.

[5] Sannyal A, Byun K, Mian S A, et al. Stabilizing a Nickel-Rich (LiNi0. 89Co0. 055Mn0. 055O2) Cathode Material by Doping Zirconium or Molybdenum: A First-Principles Study[J]. The Journal of Physical Chemistry C, 2021, 125(50): 27543-27555.

[6] Hu J, Xu B, Yang S A, et al. 2D electrides as promising anode materials for Na-ion batteries from first-principles study[J]. ACS applied materials & interfaces, 2015, 7(43): 24016-24022.

参数说明

parameter参数列表

task

sys.pseudoType

sys.pseudoPath

sys.structure

sys.symmetry

sys.symmetryAccuracy

sys.functional

sys.spin

sys.soi

sys.electron

sys.hybrid

sys.hybridType

sys.hybridAlpha

sys.hybridOmega

sys.sol

sys.solEpsilon

sys.solTAU

sys.solLambdaD

cal.iniCharge

cal.iniWave

cal.cutoffFactor

cal.cutoff

cal.methods

cal.smearing

cal.sigma

cal.kpoints

cal.ksamping

cal.toalBands

io.charge

io.elf

io.potential

io.wave

io.band

io.dos

io.optical

io.bader

io.polarization

io.magProject

io.outStep

io.bondCharge

scf.max

scf.min

scf.mixBeta

scf.mixType

scf.convergence

relax.max

relax.freedom

relax.methods

relax.convergenceType

relax.convergence

relax.stepRange

dos.range

dos.resolution

dos.project

dos.EfShift

band.kpointsLabel

band.kpointsCoord

band.kpointsNumber

band.project

band.unfolding

band.primitiveUVW

potential.type

corr.chargedSystem

corr.dipol

corr.dipolDirection

corr.dftu

corr.dftuElements

corr.dftuOrbital

corr.dftuU

corr.dftuJ

corr.VDW

corr.VDWType

corr.dipolEfield

corr.dipolPosition

pcharge.bandIndex

pcharge.kpointsIndex

pcharge.sumK

neb.springK

neb.images

neb.iniFin

neb.method

neb.convergenceType

neb.convergence

neb.stepRange

neb.max

neb.method

neb.freedom

frequency.dispOrder

frequency.dispRange

phonon.structureSize

phonon.method

phonon.type

phonon.isDisplacement

phonon.fdDisplacement

phonon.iniPhonon

phonon.qsamping

phonon.qpoints

phonon.qpointsLabel

phonon.qpointsCoord

phonon.qpointsNumber

phonon.primitiveUVW

phonon.dosRange

phonon.dosResolution

phonon.dosSigma

phonon.dfptEpsilon

phonon.nac

phonon.thermal

phonon.thermalRange

elastic.dispOrder

elastic.dispRange

aimd.ensemble

aimd.thermostat

aimd.iniTemp

aimd.finTemp

aimd.timeStep

aimd.totalSteps

detail参数详细描述

参数名称: task

默认值: 无

可选值: scf/relax/dos/band/potential/elf/pcharge/neb/frequency/phonon/elastic/aimd/epsilon/

描述： task 参数表示计算的类型，必须设置； scf/relax 可以是从头计算（不需要设置 cal.iniCharge 和 cal.iniWave ）也可以导入电荷密度或波函数（设置 cal.iniCharge 和 cal.iniWave ）； dos/band/potential/elf 为后处理计算，必须要读取电荷密度，在导入电荷密度的同时可选择性的导入波函数（必须设置 cal.iniCharge ，选择性设置 cal.iniWave ）；当 task=scf/realx 时，默认输出 system.json ；当 task=dos/band/potential/elf/pcharge 时，默认输出对应的json文件 dos.json/band.json/potential.json/elf.json/pcharge.json ; task=neb/frequency/phonon/elastic/aimd/epsilon 分别对应过渡态/频率/声子/弹性/分子动力学/介电常数计算，默认输出对应的json文件 neb.json/frequency.json/phonon.json/elastic.json/aimd.json/epsilon.json；

案例: task = scf

参数名称: sys.pseudoType

默认值: -1

可选值: -1/10/11

描述： sys.pseudoType 参数为设置 DS-PAW 计算所需的赝势格式；-1表示使用hzw赝势（.paw），目前DS-PAW支持 **H He Li Be B C N O F Ne Na Mg Al Si P S Cl Ar K Ca Sc Ti V Cr Mn Fe Co Ni Cu Zn Ga Ge As Se Br Kr Rb Sr Y Zr Nb Mo Tc Ru Rh Pd Ag Cd In Sn Sb Te I Xe Cs Ba La Hf Ta W Re Os Ir Pt Au Hg Tl Pb Bi Po At Rn* 72种元素的hzw赝势； 10表示外部potcar格式赝势(.potcar), 11表示外部pawpsp格式赝势(.pawpsp)；

案例: sys.pseudoType = -1

参数名称: sys.pseudoPath

默认值: 当 sys.pseudoType =-1时，无需设置该参数，程序只能从安装路径 /pseudopotential 读取赝势文件 ；sys.pseudoType = 10，默认值 ./ ；sys.pseudoType = 11，默认值 ./ ；

描述： sys.pseudoPath 参数为设置 DS-PAW 计算所需的赝势所在路径；一般无需自行设置，读取hzw赝势时会从默认存储路径读取，读取外部赝势时会默认从当前路径读取；

案例: sys.pseudoPath = ./

参数名称: sys.structure

默认值: atoms.as

可选值: XXX.as /XXX.json

描述： sys.structure 参数设置结构文件的路径，结构文件可以是.as格式或.json格式，支持绝对路径和相对路径；使用DS-PAW进行结构弛豫之后会生成 relax.json 文件，可以直接设置sys.structure为 relax.json 即可读取结构弛豫的文件进行计算；

案例: sys.structure = structure.as

参数名称: sys.symmetry

默认值: true

可选值: true/false

描述： sys.symmetry 该参数表示DS-PAW计算时是否进行对称性分析；

案例: sys.symmetry = false

参数名称: sys.symmetryAccuracy

默认值: 1.0e-5

可选值: real

描述： sys.symmetryAccuracy 该参数表示DS-PAW计算时对称性分析的精度；

案例: sys.symmetryAccuracy = 1.0e-6

参数名称: sys.functional

默认值: LDA

可选值: LDA/PBE/REVPBE/RPBE/PBESOL/vdw-optPBE/vdw-optB88/vdw-optB86b/vdw-DF/vdw-revPBE/vdw-DF2/vdw-revDF2

描述： sys.functional 参数指定DS-PAW的泛函类型，如果 sys.functional=LDA 则会去读取指定路径下的LDA赝势；vdw开头的系列赝势对应泛函类的范德瓦尔斯校正方法；

案例: sys.functional = PBESOL

参数名称: sys.spin

默认值: none

可选值: none/collinear/non-collinear

描述： sys.spin 参数指定计算的自旋性质； none 表示没有自旋， collinear 表示共线自旋， non-collinear 表示一般自旋；

案例: sys.spin = collinear

参数名称: sys.soi

默认值： false

可选值： true/false

描述： sys.soi 表示是否考虑自旋轨道耦合效应；自旋轨道耦合效应需要在sys.spin=non-collinear时才会生效；

案例： sys.soi = true

参数名称: sys.electron

默认值： 所有价电子的总和

可选值： real

描述： sys.electron 参数指定价电子的总数；DS-PAW通过引入背景电荷的方法计算带电体系；

案例： sys.electron = 12

参数名称: sys.hybrid

默认值： false

可选值： true/false

描述： sys.hybrid 参数指定是否使用杂化泛函；true表示引入杂化泛函，false表示不引入杂化泛函；

案例： sys.hybrid = true

参数名称: sys.hybridType

默认值： HSE06

可选值： PBE0/HSE03/HSE06/B3LYP

描述： sys.hybridType 参数指定杂化泛函的类型；该参数只有在sys.hybrid = true时生效；

案例： sys.hybridType = HSE06

参数名称: sys.hybridAlpha

默认值： 当 sys.hybridType = PBE0 时，默认值为 0.25 ，当 sys.hybridType = HSE06 时，默认值为 0.25 ，当 sys.hybridType = HSE03 时，默认值为 0.25

可选值： real

描述： sys.hybridAlpha 参数指定杂化泛函中精确的交换相关泛函的系数；该参数只有在sys.hybrid = true时生效；

案例： sys.hybridAlpha = 0.20

参数名称: sys.hybridOmega

默认值： 当 sys.hybridType = PBE0 时，默认值为 0 ，当 sys.hybridType = HSE06 时，默认值为 0.2 ，当 sys.hybridType = HSE03 时，默认值为 0.3

可选值： real

描述： sys.hybridOmega 参数指定杂化泛函的屏蔽系数；该参数只有在sys.hybrid = true时生效；

案例： sys.hybridOmega = 0.2

参数名称: sys.sol

默认值： false

可选值： false/true

描述： sys.sol 参数指定是否考虑溶剂化效应；

案例： sys.sol = true

参数名称: sys.solEpsilon

默认值： 78.4

可选值： real

描述： sys.solEpsilon 参数指定溶剂介电常数，默认值为水的介电常数；

案例： sys.solEpsilon = 80

参数名称: sys.solTAU

默认值： 5.25E-4

可选值： real

描述： sys.solTAU 参数指定有效界面张力的大小，单位eV/Å^2；

案例： sys.solTAU = 0

参数名称: sys.solLambdaD

默认值： 无

可选值： real

描述： sys.solLambdaD 参数指定泊松玻尔兹曼方程中lambdaD的数值，单位为Å，若不设置，使用泊松方程且忽略界面离子对静电势的贡献；

案例： sys.solLambdaD = 3.04

参数名称: cal.iniCharge

默认值: 无

可选值: 指定rho.bin文件路径

描述： cal.iniCharge 参数表示用户可以通过指定DS-PAW自洽或结构弛豫计算得到的电荷密度文件 rho.bin 的路径进行后续的计算； task=scf/relax 时，如果不需要读取上一次的电荷密度时则不设置 cal.iniCharge ，如果需要如果读取上一次的电荷密度时则设置cal.iniCharge；当task= dos/band/potential/elf时必须设置 cal.iniCharge 指定 rho.bin 的路径；文件路径支持相对路径和绝对路径；

案例: cal.iniCharge = /home/exp/rho.bin

参数名称: cal.iniWave

默认值: 无

可选值: 指定wave.bin文件路径

描述： cal.iniWave 参数表示用户可以通过指定DS-PAW自洽或结构弛豫计算得到的波函数文件 wave.bin 的路径进行后续的计算；不设置此参数则表示不读取 wave.bin ；文件路径支持相对路径和绝对路径；

案例: cal.iniWave = /home/exp/wave.bin

参数名称: cal.cutoffFactor

默认值: 1.0

可选值: real

描述： cal.cutoffFactor 表示截断能参数cal.cutoff的系数，当 cal.cutoffFactor=1.5 时，DS-PAW计算时使用的截断能为cal.cutoff*1.5。DS-PAW2022A版本内部赝势皆已完成测试，cutoffFactor设置默认值1.0已能满足大多计算要求；

案例: cal.cutoffFactor = 1.0

参数名称: cal.cutoff

默认值: 当前计算所用的元素赝势中截断能的最大值；

可选值: real

描述： cal.cutoff 参数表示DS-PAW软件计算时候使用的平面波基矢的截断能，可在安装路径 /pseudopotential 查看各赝势文件内置截断能ecutoff的大小，如从O_PBE.paw文件可读出O_PBE的ecutoff为650 eV。

案例: cal.cutoff = 650

参数名称: cal.methods

默认值: 1

可选值: 1/2/3/4/5

描述： cal.methods 表示自洽电子部分优化的方法，1表示 BD(block Davidson) 方法；2表示 RM(residual minimization) 方法； 3表示 RM(residual minimization) 方法和 BD(block Davidson) 方法的组合；4表示 damped MD (阻尼分子动力学)方法；5表示 conjugated gradient (共轭梯度方法)；其中4和5可以在杂化泛函中使用；

案例: cal.methods = 1

参数名称: cal.smearing

默认值: 1

可选值: 1/2/3/4

描述： cal.smearing 表示用何种方法来设置每个波函数的部分占有数Gaussian smearing/Fermi-smearing/Methfessel-Paxton order 1/tetrahedron method with Blochl corrections；

案例: cal.smearing = 2

参数名称: cal.sigma

默认值: 0.2

可选值: real

描述： cal.sigma 表示使用有限温度方法设置部分占有数时的展宽；

案例: cal.sigma = 0.01

参数名称: cal.kpoints

默认值: [1,1,1]

可选值: 3*1 int array

描述： cal.kpoints 表示DS-PAW设置布里渊区k点网格取样大小；

案例: cal.kpoints = [9,9,9]

参数名称: cal.ksamping

默认值: MP

可选值: MP/G

描述： cal.ksamping 表示DS-PAW自动生成布里渊区k点网格的方法， Monhkorst-Pack 方法/ Gamma centered 方法；

案例: cal.ksamping = G

参数名称: cal.totalBands

默认值: 与体系价电子数目相关

可选值: int

描述： cal.totalBands 表示DS-PAW计算中所包含的总能带数目；

案例: cal.totalBands = 100

参数名称: io.charge

默认值: true

可选值: true/false

描述： 输出电荷密度的二进制文件 rho.bin 和 rho.json文件 ；当io.charge=true时，生成 rho.bin 和 rho.json文件 ；当task=scf/realx时该参数可以选择 true/false ；当task= dos/band/potential/elf时，io.charge强制为 false ；

案例: io.charge = true

参数名称: io.elf

默认值: false

可选值: false/true

描述： 输出ELF的数据结果；当task=scf/realx时该参数可以选择 true/false ；当task= dos/band/potential时，io.elf强制为 false ；当task=elf时，io.elf强制为 true ；

案例: io.elf = true

参数名称: io.potential

默认值: false

可选值: false/true

描述： 输出势函数的数据结果；当task=scf/realx时该参数可以选择 true/false ；当task= dos/band/elf时，io.potential强制为 false ；当task=potential时，io.potential强制为 true ；当io.potential=true时，可以选择 potential.type 来设置输出势函数的类型；

案例: io.potential = true

参数名称: io.wave

默认值: false

可选值: false/true

描述： 输出波函数的二进制文件 wave.bin ；当io.wave=true时，生成 wave.bin 文件；当task=scf/realx时该参数可以选择 true/false ；当task= dos/band/potential/elf时，io.wave强制为 false ；

案例: io.wave = true

参数名称: io.band

默认值: false

可选值: false/true

描述： 在task=scf时是否直接计算能带的开关；当io.band=true时，所有能带计算参数都生效；

案例: io.band = true

参数名称: io.dos

默认值: false

可选值: false/true

描述： 在task=scf时是否直接计算态密度的开关；当io.dos=true时，所有态密度计算参数都生效；

案例: io.dos = true

参数名称: io.optical

默认值: false

可选值: false/true

描述： 输出光学性质计算文件optical.json；当io.optical=true时，生成optical.json文件；当task=scf时该参数可以选择true/false；

案例: io.optical = true

参数名称: io.bader

默认值: false

可选值: false/true

描述： 输出bader电荷文件bader.json；当io.bader=true时，生成bader.json文件；当task=scf时该参数可以选择true/false；

案例: io.bader = true

参数名称: io.polarization

默认值: false

可选值: false/true

描述： 输出铁电极化文件polarization.json；当io.polarization=true时，生成polarization.json文件；当task=scf时该参数可以选择true/false；

案例: io.polarization = true

参数名称: io.magProject

默认值: false

可选值: false/true

描述： 在磁矩计算中，控制在system.json文件中是否写入磁矩信息；

案例: io.magProject = true

参数名称: io.outStep

默认值: task = relax/neb 时默认值为1，task = aimd 时默认值为20

可选值: int

描述： 控制在结构弛豫计算、过渡态计算、分子动力学模拟计算中，多少个离子步在对应的paw_tmp/relax.tmp、paw_tmp/neb.tmp、paw_tmp/aimd.tmp文件中写一次结构信息；

案例: io.outStep = 50

参数名称: io.bondCharge

默认值: false

可选值: true/false

描述： 控制引入隐式溶剂模型时是否输出溶剂电荷密度文件；

案例: io.bondCharge = true

参数名称: scf.max

默认值: 60

可选值: int

描述： scf.max 表示DS-PAW自洽计算时电子步的最大步数；

案例: scf.max = 100

参数名称: scf.min

默认值: 2

可选值: int

描述： scf.min 表示DS-PAW自洽计算时电子步的最少步数；

案例: scf.min = 5

参数名称: scf.mixBeta

默认值: 0.4

可选值: real

描述： scf.mixBeta 表示DS-PAW自洽计算时电子混合算法的Beta值；

案例: scf.mixBeta = 0.2

参数名称: scf.mixType

默认值: Broyden

可选值: Broyden/Kerker

描述： scf.mixType 表示DS-PAW自洽计算时电子混合算法的类型，目前支持 Broyden方法 和 Kerker方法 ；

案例: scf.mixType = Broyden

参数名称: scf.convergence

默认值: 1.0e-4

可选值: real

描述： scf.convergence 表示DS-PAW自洽计算时，能量的收敛判据；

案例: scf.convergence = 1.0e-5

参数名称: relax.max

默认值: 60

可选值: int

描述： relax.max 表示DS-PAW结构驰豫时，最大的离子步步数；

案例: relax.max = 300

参数名称: relax.freedom

默认值: atom

可选值: atom/all/volume

描述： relax.freedom 表示DS-PAW结构驰豫的自由度，atom表示只弛豫原子; all表示弛豫晶格常数和原子; volume表示只弛豫晶格；

案例: relax.freedom = atom

参数名称: relax.methods

默认值: CG

可选值: CG/DMD/QN

描述： relax.methods 表示DS-PAW结构驰豫的方法，CG表示共轭梯度法; DMD表示阻尼分子动力学法; QN表示准牛顿方法；

案例: relax.methods = CG

参数名称: relax.convergenceType

默认值: force

可选值: force/energy

描述： relax.convergenceType 表示弛豫计算中收敛标准的选择，可以选择受力或以能量为收敛标准；

案例: relax.convergenceType = energy

参数名称: relax.convergence

默认值: 0.05/1e-4

可选值: real

描述： relax.convergence 表示DS-PAW结构驰豫时，原子受力或能量的收敛判据；选择力为收敛标准时默认值为0.05，选择能量为收敛标准时默认值为1e-4；

案例: relax.convergence = 0.01

参数名称: relax.stepRange

默认值: 0.5

可选值: real

描述： relax.stepRange 表示结构驰豫时，结构驰豫的中的缩放常数；

案例: relax.stepRange = 0.2

参数名称: dos.range

默认值: [-10,10]

可选值: 2*1 array

描述： dos.range 表示当task=dos时，态密度计算能量的区间；

案例: dos.range = [-15,15]

参数名称: dos.resolution

默认值: 0.05

可选值: real

描述： dos.resolution 表示当task=dos时，态密度计算能量间隔精度；

案例: dos.resolution = 0.1

参数名称: dos.project

默认值: false

可选值: false/true

描述： dos.project 参数控制着投影态密度；当task=dos时,dos.project为 false/true ；若打开投影，dos.project= ture , 此时 dos.json 中将会保存投影态密度的信息；若不打开投影，dos.project = false ；

案例: dos.project = true

参数名称: dos.EfShift

默认值: false

可选值: false/true

描述： dos.EfShift 参数表示 dos.range 的两个能量是否按照自洽的费米能级平移；当dos.EfShift=fasle，则 dos.range 的能量不按照费米能级平移；当dos.EfShift=true，则 dos.range 的能量按照费米能级平移；

案例: dos.EfShift = true

参数名称: band.kpointsLabel

默认值: 无

可选值: n*1 string array

描述： 该参数只有在task=band时才能生效； band.kpointsLabel 为能带计算时高对称点标签, band.kpointsLabel数据大小是band.kpointsCoord 数据大小的 1/3 ；比band.kpointsNumber数据大小多 1 ；

案例: band.kpointsLabel = [G,M,K,G]

参数名称: band.kpointsCoord

默认值: 无

可选值: 3n*1 real array

描述： 该参数只有在task=band时才能生效； band.kpointsCoord 为能带计算时高对称点的分数坐标, band.kpointsCoord 数据大小是band.kpointsLabel数据大小的 3倍 ；

案例: band.kpointsCoord = [0, 0, 0, 0.5, 0.5, 0.5, 0, 0, 0.5, 0, 0, 0]

参数名称: band.kpointsNumber

默认值: 无

可选值: (n-1)*1 int array

描述： 该参数只有在task=band时才能生效； band.kpointsNumber 为能带每相邻两个高对称点的间隔， band.kpointsNumber 比 band.kpointsLabel 数据大小少 1 ；

案例: band.kpointsNumber = [5, 5, 5]

参数名称: band.project

默认值: false

可选值: false/true

描述： band.project 参数控制着投影能带；当task= band 时, band.project为 false/true ；若打开投影，band.project= ture , 此时 band.json 中将会保存投影态密度的信息；若不打开投影，band.project = false ；

案例: band.project = true

参数名称: band.unfolding

默认值: false

可选值: false/true

描述： band.unfolding 参数是能带去折叠的开关；当task= band 时, band.unfolding生效（io.band = true不生效），若设置band.unfolding= ture , 此时 band.json 中将会保存反折叠能带数据 ；

案例: task = band, band.unfolding = true

参数名称: band.primitiveUVW

默认值: 无

可选值: 9*1 real array

描述： band.primitiveUVW 能带去折叠计算时，超胞的晶格常数乘上UVW系数等于原胞的晶格矢量；

案例: band.primitiveUVW = [0.0, 0.5, 0.5, 0.5, 0.0, 0.5, 0.5, 0.5, 0.0]

参数名称: potential.type

默认值: total

可选值: total/hartree/all

描述： potential.type 只在task=scf/realx且io.potential=true、或task=potential时生效；当potential.type为hartree时， potental.json 中输出静电势，当为total时，potental.json中输出总的局域势即离子势、静电势和交换关联势的和，当为all时， potental.json 中同时输出两个势；

案例: potential.type = all

参数名称: corr.chargedSystem

默认值: false

可选值: false/true

描述： corr.chargedSystem 表示当计算带电体系时，可以设置该参数修正带电块体体系的能量；

案例: corr.chargedSystem = true

参数名称: corr.dipol

默认值: false

可选值: false/true

描述： corr.dipol 表示引入人为的势场(偶极修正)来修正真空电势不平整的问题；

案例: corr.dipol = true

参数名称: corr.dipolDirection

默认值: 无

可选值: a/b/c

描述： corr.dipolDirection 表示偶极修正的方向，a/b/c分别表示三个晶格常数的方向；

案例: corr.dipolDirection = c

参数名称: corr.dipolPosition

默认值: 无

可选值: 3*1 real array

描述： corr.dipolPosition 表示偶极子在晶胞的相对位置；

案例: corr.dipolPosition = [0.5, 0.5, 0.5]

参数名称: corr.dipolEfield

默认值: 0

可选值: real

描述： corr.dipolEfield 表示外加电场的大小，单位为eV/Å，该参数只在 corr.dipol = true 和设置 corr.dipolDirection 的情况下生效；

案例: corr.dipolEfield = 0.05

参数名称: corr.dftu

默认值: false

可选值: false/true

描述： corr.dftu 表示是否引入hubbard U来处理强关联体系；

案例: corr.dftu = true

参数名称: corr.dftuElements

默认值: 无

可选值: n*1 string array

描述： corr.dftuElements 表示设置需要加U的元素；

案例: corr.dftuElements = [Ni,O]

参数名称: corr.dftuOrbital

默认值: 无

可选值: n*1 string array

描述： corr.dftuOrbital 表示设置选中元素上需要加U的轨道；

案例: corr.dftuOrbital = [d,s]

参数名称: corr.dftuU

默认值: 无

可选值: n*1 real array

描述： corr.dftuU 表示设置选中元素选中轨道上需要加U值的大小；

案例: corr.dftuU = [8,1]

参数名称: corr.dftuJ

默认值: 无

可选值: n*1 real array

描述： corr.dftuJ 表示设置选中元素选中轨道上需要加J值的大小；

案例: corr.dftuJ = [0.95,0]

参数名称: corr.VDW

默认值: false

可选值: false/true

描述： corr.VDW 表示是否引入范德瓦尔斯修正；

案例: corr.VDW = true

参数名称: corr.VDWType

默认值: D2G

可选值: D2G/D3G/D3BJ

描述： corr.VDWType 表示使用哪种范德瓦尔斯修正，D2G表示DFT-D2 of Grimme方法; D3G表示DFT-D3 of Grimme方法; D3BJ表示DFT-D3 with Becke-Jonson damping方法；

案例: corr.VDWType = D3G

参数名称: pcharge.bandIndex

默认值: 无

可选值: n*1 int array

描述： pcharge.bandIndex 表示部分电荷密度计算时能带的序号；

案例: pcharge.bandIndex = [1,3,4]

参数名称: pcharge.kpointsIndex

默认值: 无

可选值: n*1 int array

描述： pcharge.kpointsIndex 表示部分电荷密度计算时K点的序号；

案例: pcharge.kpointsIndex = [12,14]

参数名称: pcharge.sumK

默认值: false

可选值: false/true

描述： pcharge.sumK 表示计算部分电荷密度之后保存数据是否将所有K点，不同能带的数据相加；

案例: pcharge.sumK = true

参数名称: neb.springK

默认值: 5

可选值: real

描述： neb.springK 表示过渡态计算中弹簧系数K；

案例: neb.springK = 7

参数名称: neb.images

默认值: 无

可选值: int

描述： neb.images 表示过渡态计算中的中间结构的数目；

案例: neb.images = 5

参数名称: neb.iniFin

默认值: false

可选值: true/false

描述： neb.iniFin 表示过渡态计算中初态结构和末态结构是否进行自洽计算，true表示进行自洽计算；

案例: neb.iniFin = true

参数名称: neb.method

默认值: QN

可选值: LBFGS/CG/QM/QN/QM2/FIRE

描述： neb.method 表示过渡态计算中使用的算法；

案例: neb.method = QN

参数名称: neb.freedom

默认值: atom

可选值: atom/all

描述： neb.freedom 表示过渡态计算中弛豫的自由度，可以选择只弛豫原子，也可放开晶胞进行弛豫；

案例: neb.freedom = all

参数名称: neb.convergenceType

默认值: force

可选值: force/energy

描述： neb.convergenceType 表示过渡态计算中收敛标准的选择，可以选择受力或以能量为收敛标准；

案例: neb.convergenceType = energy

参数名称: neb.convergence

默认值: 0.1/1e-4

可选值: real

描述： neb.convergence 表示过渡态计算中受力或能量的收敛标准；选择力为收敛标准时默认值为0.1，选择能量为收敛标准时默认值为1e-4；

案例: neb.convergence = 0.01

参数名称: neb.stepRange

默认值: 0.1

可选值: int

描述： neb.stepRange 表示过渡态计算中结构弛豫的步长；

案例: neb.stepRange = 0.01

参数名称: neb.max

默认值: 60

可选值: int

描述： neb.max 表示过渡态计算中结构弛豫的最大步数；

案例: neb.max = 300

参数名称: frequency.dispOrder

默认值: 1

可选值: 1/2

描述： frequency.dispOrder 表示频率计算时原子振动的方式，1对应中心差分法，有两种振动方式，2对应四种振动方式；

案例: frequency.dispOrder = 2

参数名称: frequency.dispRange

默认值: 0.01

可选值: real

描述： frequency.dispRange 表示频率计算时的原子位移；

案例: frequency.dispRange = 0.05

参数名称: phonon.structureSize

默认值: [1,1,1]

可选值: 3*1 int array

描述： phonon.structureSize 表示声子计算时超胞的大小；

案例: phonon.structureSize = [2,2,2]

参数名称: phonon.method

默认值: fd

可选值: fd/dfpt

描述： phonon.method 表示声子计算的方式；fd为有限位移法；dfpt为密度泛函微扰理论方法；

案例: phonon.method = dfpt

参数名称: phonon.type

默认值: phonon

可选值: phonon/band/dos/bandDos

描述： phonon.type 表示声子计算哪些性质：phonon对应计算力常数矩阵或force set；band对应计算声子能带；dos对应计算声子态密度；bandDos对应计算声子能带及声子态密度；

案例: phonon.type = bandDos

参数名称: phonon.isDisplacement

默认值: true

可选值: true/false

描述： phonon.isDisplacement 表示fd方法计算声子计算时是否进行位移；

案例: phonon.isDisplacement = true

参数名称: phonon.fdDisplacement

默认值: 0.01

可选值: real

描述： phonon.fdDisplacement 表示fd方法计算声子计算时进行位移的大小；

案例: phonon.fdDisplacement = 0.05

参数名称: phonon.iniPhonon

默认值: 无

可选值: 指定phonon.json的路径

描述： phonon.iniPhonon 表示声子能带或态密度计算时读取力常数矩阵或force set时的路径；

案例: phonon.iniPhonon = ./phonon.json

参数名称: phonon.qsamping

默认值: MP

可选值: MP/G

描述： phonon.qsamping 表示计算声子时布里渊区q点采样方法，Monkhorst-Pack 方法/ Gamma centered 方法；

案例: phonon.qsamping = G

参数名称: phonon.qpoints

默认值: [1,1,1]

可选值: 3*1 int array

描述： phonon.qpoints 表示声子计算时Q空间网格取样大小；

案例: phonon.qpoints = [9,9,9]

参数名称: phonon.qpointsLabel

默认值: 无

可选值: n*1 string array

描述： phonon.qpointsLabel 表示声子能带计算时高对称点标签；

案例: phonon.qpointsLabel = [G,M,K,G]

参数名称: phonon.qpointsCoord

默认值: 无

可选值: 3n*1 real array

描述： phonon.qpointsCoord 表示声子能带计算时高对称点坐标；

案例: phonon.qpointsCoord = [0, 0, 0, 0.5, 0.5, 0.5, 0, 0, 0.5, 0, 0, 0]

参数名称: phonon.qpointsNumber

默认值: 51

可选值: int

描述： phonon.qpointsNumber 表示声子能带相邻两个高对称点的间隔；

案例: phonon.qpointsNumber = 100

参数名称: phonon.primitiveUVW

默认值: [1,0,0,0,1,0,0,0,1]

可选值: 9*1 real array

描述： phonon.primitiveUVW 声子能带计算时，超胞的晶格常数乘上UVW系数等于原胞的晶格矢量；

案例: phonon.primitiveUVW = [1,0,0,0,1,0,0,0,1]

参数名称: phonon.dosRange

默认值: [0, 40]

可选值: 2*1 real array

描述： phonon.dosRange 表示声子态密度计算能量的区间；

案例: phonon.dosRange = [-15,15]

参数名称: phonon.dosResolution

默认值: 0.1

可选值: real

描述： phonon.dosResolution 表示声子态密度计算能量间隔精度；

案例: phonon.dosResolution = 0.01

参数名称: phonon.dosSigma

默认值: 0.1

可选值: real

描述： phonon.dosSigma 表示声子态密度计算时的展宽；

案例: phonon.dosSigma = 0.1

参数名称: phonon.dfptEpsilon

默认值: false

可选值: false/true

描述： phonon.dfptEpsilon 是phonon.method = dfpt时控制介电常数计算的开关；

案例: phonon.dfptEpsilon = true

参数名称: phonon.nac

默认值: phonon.dfptEpsilon = true 时默认为true

可选值: false/true

描述： 当phonon.dfptEpsilon = true时，若计算能带和态密度，phonon.nac作为是否使用non-analytical term correction的开关；

案例: phonon.nac = false

参数名称: phonon.thermal

默认值: false

可选值: false/true

描述： phonon.thermal 是 task=phonon且phonon.type=dos或phonon.type=bandDos时控制热力学性质计算的开关；

案例: phonon.thermal = true

参数名称: phonon.thermalRange

默认值: [0,1200,10]

可选值: 3*1 real array

描述： phonon.thermalRange [min_T, max_T, ΔT]表示热力学性质计算时温度的选取范围以及数据存储间隔；

案例: phonon.thermalRange = [0,1000,10]

参数名称: elastic.dispOrder

默认值: 1

可选值: 1/2

描述： elastic.dispOrder 表示弹性常数计算时原子振动的方式，1对应中心差分法，有两种振动方式，2对应四种振动方式；

案例: elastic.dispOrder = 1

参数名称: elastic.dispRange

默认值: 0.01

可选值: real

描述： elastic.dispRange 表示弹性常数计算时的原子位移；

案例: elastic.dispRange = 0.05

参数名称: aimd.ensemble

默认值: NVE

可选值: NVE/NVT/TS

描述： aimd.ensemble 表示分子动力学模拟时选用的系综；TS对应高温退火过程；

案例: aimd.ensemble = NVE

参数名称: aimd.thermostat

默认值: none

可选值: none/andersen/noseHoover

描述： aimd.thermostat 表示分子动力学模拟时选用的热浴方法；

案例: aimd.thermostat = andersen

参数名称: aimd.iniTemp

默认值: 无

可选值: real

描述： aimd.iniTemp 表示分子动力学模拟时的初始温度；

案例: aimd.iniTemp = 1000

参数名称: aimd.finTemp

默认值: aimd.iniTemp

可选值: real

描述： aimd.finTemp 表示分子动力学模拟时的末态温度；

案例: aimd.finTemp = 1000

参数名称: aimd.timeStep

默认值: 无

可选值: real

描述： aimd.timeStep 表示分子动力学模拟时的时间步长；

案例: aimd.timeStep = 1

参数名称: aimd.totalSteps

默认值: 无

可选值: real

描述： aimd.totalSteps 表示分子动力学模拟的总步数；

案例: aimd.totalSteps = 10000

2. 模块介绍

2.1. PREPARE模块

DASP有两个主要输入文件 POSCAR 和 dasp.in ，其中 dasp.in 是主要的计算参数控制文件。

在进行正式计算之前，PREPARE模块首先会检测 dasp.in 中的输入参数是否合理。如果合理，则启动下一步的计算，并在 1prepare.out 中注明准备工作成功完成。

若不合理则会把相关的错误和报警信息输出到 1prepare.out 文件中，程序终止。用户需要根据报警信息修改相关参数，重新运行。

DASP调用第一性原理计算软件VASP开展结构和电子结构计算，因此，DASP会根据 dasp.in 的输入参数自动产生VASP计算需要的输入文件：晶体结构文件 POSCAR 、VASP计算参数控制文件 INCAR 、k点文件 KPOINTS 、赝势文件 POTCAR 、任务提交脚本文件。

POSCAR的产生

DASP根据用户输入的结构文件 POSCAR ，通过本项目组发展的“近似立方体超胞”算法，产生一个给定原子数范围之内的、最接近立方体的超胞。然后，固定晶格常数，对超胞内的所有原子位置进行优化，得到 POSCAR_final 文件。

KPOINTS的产生

对于含缺陷超胞的计算，DASP均采用单k点的方式，即 KPOINTS 文件中只包含Gamma点。

INCAR的产生

DASP会产生两个不同的INCAR， INCAR-relax 为结构优化计算所用的INCAR， INCAR-static 为静态计算使用的INCAR。默认产生的参数均为常用参数，若用户需要修改，可在PREPARE模块运行完后自行修改。根据 dasp.in 的输入参数，DASP可采用三种不同等级的计算（详见输入参数level=1或2或3）。对于level=2和3，将开展杂化泛函的计算。对于杂化泛函中严格交换部分的比例，DASP可以根据用户在 dasp.in 中设置的实验带隙值自动确定，并将匹配实验带隙值的交换比例参数写入INCAR中。

POTCAR文件的产生

根据用户提供的赝势文件路径，DASP会自动产生计算所需要的赝势文件 POTCAR 。

任务提交脚本文件的产生

DASP会根据 dasp.in 中用户输入的队列系统名称、队列名、节点数、核数、vasp路径，自动产生提交任务的脚本文件。

如上所述，PREPARE模块将自动调用VASP开展超胞结构的优化、杂化泛函中严格交换部分比例的自动确定计算。若用户在 dasp.in 中指定采用Lany-Zunger修正方案（详见输入参数correction介绍），该方案需要知道超胞对应的马德隆常数。根据产生的超胞结构，PREPARE模块会调用VASP自动计算超胞的马德隆常数，并写入 dasp.in 中。此处的马德隆常数只与超胞的晶格形状相关。

上述产生文件和计算过程的所有细节，都将输入到 1prepare.out 文件。相关的状态、结果及报错信息，可以根据此文件查询。该模块成功运行完成后，将在 1prepare.out 文件末尾备注成功完成信息，后续TSC模块启动时将检测该信息。

2.2. TSC模块

TSC模块的主要功能是计算目标化合物半导体的热力学稳定性与各元素化学势的稳定范围，其中，元素化学势将作为下一步DEC和DDC模块计算的输入。

一个化合物半导体是否稳定，取决于其形成能。如果其比与其竞争的单质相和杂相化合物在形成能上更有优势，则该化合物半导体在热力学上可以稳定。具体判断过程如下。

化合物半导体热力学稳定性的判断

如果一个化合物半导体在热力学上稳定（不相分解为单质或其他杂相，合成的样品可以保证纯的单相状态），那么，其需要满足如下三类条件：

（1）目标化合物的生成反应达到热力学平衡：

在平衡情况下，目标化合物的生成反应与分解反应处于动态平衡，对化合物 \(A_kB_lC_mD_n\) ，各组成元素的化学势 \(\mu\) 及该化合物的形成能 \(E^f\) 需要满足下列等式：

\[k\mu_A + l\mu_B + m\mu_C + n\mu_D = E^f(A_kB_lC_mD_n)\]

（2）与目标化合物半导体竞争的各类杂相化合物的生成反应不能进行：

对任一杂相化合物 \(A_{k'}B_{l'}D_{n'}\) ，各元素的化学势及杂相化合物的形成能需要满足下列不等式：

\[k'\mu_A + l'\mu_B + n'\mu_D < E^f(A_{k'}B_{l'}D_{n'})\]

（3）目标化合物各组成元素的单质相不会形成：

为避免形成单质相，各元素的化学势满足以下不等式：

\[\mu_A< 0\ ,\ \mu_B< 0\ ,\ \mu_C< 0\ ,\ \mu_D < 0\]

在考虑所有可能的竞争杂相和单质相后，如果各元素的化学势可以存在一个范围，能满足以上所有限制条件，那么该目标化合物半导体在热力学上可以稳定。否则，该化合物半导体不稳定，会通过某个相分解反应分解为单质或其他杂相，合成的样品不能保证纯的单相状态。

上述条件和过程给出的热力学稳定性的判断结果，实际上与化合物的energy above hull在判断热力学稳定性上效果等价。如果energy above hull为正，该化合物不稳定，元素化学势不存在一个范围满足以上所有条件；如果energy above hull为负，该化合物稳定，元素化学势存在一个范围满足以上所有条件。

热力学稳定性计算的两个步骤

根据上述讨论，计算化合物半导体的热力学稳定性和元素化学势稳定范围，需要所有杂相化合物的形成能。对于二元、三元、四元、五元甚至更多元的化合物，其可能的竞争杂相化合物很多，在计算中均需要考虑进来。如果考虑不充分，将导致一些不稳定的化合物被计算预测为稳定的。因此，充分的考虑所有可能的杂相对于精确计算热力学稳定性和元素化学势范围非常关键。为尽可能充分的考虑所有可能的杂相，DASP根据目标半导体的组成元素，自动搜索Materials Project材料基因数据库包含的各种可能杂相，并根据其形成能结果快速确定影响目标化合物半导体的关键杂相；然后，针对目标化合物和关键杂相，开展精确的形成能计算，根据结果进一步精确计算目标化合物的稳定性和元素化学势空间的稳定范围。具体分为两个阶段：

第一步

DASP将访问Materials Project数据库，检索目标化合物组成元素相关的所有可能杂相，获取数据库中的能量与结构信息。同时，产生与Materials Project数据库一致的VASP计算参数（Materials Project数据库目前采用GGA-PBE交换关联势近似）和输入文件： INCAR 、 KPOINTS 、 POTCAR、 POSCAR （复制自用户提供的文件） ，调用VASP计算目标化合物的总能和形成能（由此计算得到的能量与Materials Project数据库中能量是直接可比的）。计算流程与Materials Project数据库的流程一致，分为两次结构优化与一次静态计算，分别在"TSC/目标化合物同名目录"下的 relaxation1 ， relaxation2 ， static 。

然后，汇总目标化合物和竞争的杂相化合物的形成能信息，求解上述三类判断条件对应的等式和不等式组，预测目标化合物是否稳定，并确定限制元素化学势稳定范围的关键杂相。这一阶段计算仅需调用VASP计算目标化合物半导体原胞的结构和总能，并且是采用GGA-PBE交换关联势近似，计算量很小；而大量可能的杂相的数据，均直接来自Materials Project数据库，无需计算。因此，可以快速、充分的考虑各种杂相，从而确定关键杂相。

第二步

针对目标化合物和第一阶段确定的关键杂相，采用PREPARE模块产生的统一的VASP计算参数和输入文件： INCAR 和 POTCAR 、TSC模块自动产生的 KPOINTS 、 POSCAR （对于目标化合物，复制自用户提供的文件；对于关键杂相，自动从Materials Project数据库下载），调用VASP重新计算目标化合物和关键杂相的能量和形成能。为加快计算，本阶段，仅对目标化合物和关键杂相做静态计算，计算目录位于"TSC/目标或杂相化合物同名目录下" static_recalc 。然后，根据本阶段计算的目标化合物和关键杂相的形成能，重新求解上述三类判断条件对应的等式和不等式组，计算各元素的化学势稳定范围，作为后续DEC和DDC模块计算的元素化学势输入。

基于上述两步计算中目标化合物及其杂相的形成能数据，TSC模块也自动计算并输出目标化合物的energy above hull （eV/atom）以及最可能的分解路径。energy above hull 可用于衡量目标化合物的稳定程度（相对于相分解反应），其值越负该化合物越稳定；其值为正时，该化合物不稳定，其值越大越不稳定。该模块可以独立运行，因此，可以作为新型化合物材料稳定性快速、精确预测的高通量计算工具。

对于三元与四元化合物半导体，TSC模块可以绘制元素化学势空间中二维与三维的稳定区域相图，具体请参考案例说明。

TSC模块运行的所有细节、计算结果及其报错信息，都输出在 2tsc.out 文件中，可以根据此文件查询该模块的运行状况。该模块成功运行完成后，将在 2tsc.out 文件末尾备注成功完成信息，后续DEC模块启动时将检测该信息。

2.3. DEC模块

DEC模块的主要功能是根据超胞模型、调用第一性原理程序计算缺陷和杂质的形成能和转变能级（离化能级），这也是1990年代迄今大多数缺陷和杂质第一性原理计算研究论文中给出的主要结果。

DEC模块将根据 dasp.in 中用户设置的参数和PREPARE模块输出的超胞结构，自动产生一系列缺陷和杂质的结构构型。然后，基于PREPARE模块产生的VASP输入文件和TSC模块输出的元素化学势数值，DEC模块会调用第一性原理计算软件VASP开展缺陷和杂质的结构和电子结构的计算，根据其结果计算各缺陷和杂质的形成能和转变能级，输出图像。

在产生结构之前，DEC模块首先会检测 dasp.in 中的输入参数是否合理。如果合理，则启动下一步计算，并在 3dec.out 中实时输出运行状态信息。

若不合理，则会把相关的错误和报警信息输出到 3dec.out 文件中，程序终止。用户需要根据报警信息修改相关参数，重新运行。

DEC模块运行分为以下六个步骤：产生中性缺陷、自动提交中性缺陷计算任务、产生带电缺陷、自动提交带电缺陷计算任务、计算各缺陷的不同价态在不同元素化学势和费米能级下的形成能、输出图像。

中性缺陷的产生

中性缺陷包括空位、反位以及间隙缺陷三类，DEC模块利用PREPARE模块产生的超胞文件 POSCAR_final ，根据晶体结构的对称性来产生所有不等价位置的空位和反位缺陷，并在距原子较远位置通过随机撒点的方式获得间隙缺陷。待缺陷构型产生完毕，DEC模块将把PREPARE模块产生的INCAR、KPOINTS、POTCAR、任务脚本文件等VASP输入文件，放入各个缺陷的目录中。对于外来杂质，只产生反位（替位）、间隙两种构型。

带电缺陷的产生

DEC模块将根据中性缺陷的计算结果（中性缺陷本征值的占据状态），产生相应的带电缺陷的计算目录。对于中性缺陷计算失败或未收敛的缺陷，则不会产生带电缺陷。

自动提交计算任务

DEC模块会自动调用VASP开展所有电中性和带电缺陷的结构优化和静态计算，并自动检测任务是否成功以及收敛。可在dec目录下，使用命令 dec-state 随时查看所有待计算的任务状态，包括完成已收敛、完成未收敛、计算出错、正在计算、正在等待，未提交等状态。待DEC模块运行完毕后，对于未收敛和计算出错的任务，用户可以进入相应的目录修改INCAR参数，并将该目录写入dec目录下的 redo.in 文件，并重新执行DEC模块。

形成能计算

形成能计算公式：

\[ΔE_{f} = E_{tot(defect)} - E_{tot(host)} - \Sigma_{i}n_{i}(\mu_{i} + E_{i}) + q(E_{F} + E_{VBM}) + E_{corr}\]

其中， \(ΔE_{f}\) 表示形成能， \(E_{tot(defect)}\) 表示含缺陷超胞的能量， \(E_{tot(host)}\) 表示不含缺陷超胞的能量； \(n_{i}\) 表示缺陷形成过程中从超胞移除的第 \(i\) 种元素的原子数( \(n_{i}\) ＜0)或移入的原子数( \(n_{i}\) >0)， \(\mu_{i}\) 表示第 \(i\) 种元素的化学势，其以该元素单质相的每个原子的能量 \(E_{i}\) 作为参考； \(q\) 表示缺陷超胞的带电量（施主缺陷离化后转变为正电状态， \(q>0\) ，电子被移出超胞；受主缺陷离化后转变为负电状态， \(q<0\) ，电子被移入超胞）， \(E_{F}\) 表示以价带顶能级 \(E_{VBM}\) 作为参考的费米能级； \(E_{corr}\) 表示超胞计算模型中由于超胞大小有限和镜像电荷相互作用等引入的形成能修正值。

DEC模块会读取第一性原理计算的输出，根据该公式计算出各个缺陷各带电状态的形成能，并根据用户设置的修正方法自动加入修正值。对于计算失败或未收敛的缺陷，则不会计算形成能。

输出图像

DEC模块会根据形成能的计算结果输出各缺陷形成能随费米能级变化的图像，包括dat格式的数据： p1.dat, p2.dat, ... 及png格式的图片： p1.png, p2.png, ... （数字表示TSC模块给出的化学势空间的取点数量），以及转变能级的数据 tl.dat 及图片： tl.png 。请根据文件中对应的说明进行画图。

畸变结构计算

DEC模块会根据原始缺陷结构的计算结果，自动产生畸变结构。值得注意的是：必须要等原始缺陷结构的计算完成后，指定要产生畸变结构的缺陷，再次运行DEC模块进行计算。对于未完成初始结构计算的缺陷，则不会产生畸变结构。

上述产生文件和计算过程的所有细节，都将输入到 3dec.out 文件。相关的状态、结果及报错信息，可以根据此文件查询。该模块成功运行完成后，将在 3dec.out 文件末尾备注成功完成信息，后续DDC模块启动时将检测该信息。

果及报错信息，可以根据此文件查询。该模块成功运行完成后，将在 3dec.out 文件末尾备注成功完成信息，后续DDC模块启动时将检测该信息。

2.4. DDC模块

对于半导体材料和器件的性能优化及仿真设计，缺陷浓度是一个重要的参数。实验上，可以通过控制材料的生长环境来抑制有害缺陷的形成或促进有利缺陷的形成，从而达到优化器件性能的目的。计算上，如果能在缺陷形成能和能级计算结果的基础上，进一步计算缺陷浓度随元素化学势等生长条件的变化，便可以为半导体性能调控提供更明确、定量的参考。

DDC模块的主要功能是，读入此前TSC和DEC模块计算的各化学势条件下的缺陷形成能和转变能级等结果，根据电中性条件自洽求解体系在一定生长和工作温度下的费米能级、缺陷浓度和载流子浓度。

对于一个价态（带电状态）为q的缺陷α，其平衡态下浓度可表示为：

\[N(α,q)=N_{sites}g_qexp[-ΔE_f/k_BT]\]

其中 \(N_{sites}\) 表示该缺陷在单位体积可能形成的位点数； \(g_q\) 表示该缺陷处于价态q时的缺陷态简并因子； \(ΔE_f\) 表示缺陷的形成能。 | 离化后的带电缺陷会影响载流子的浓度。所有带正电（q>0）的离化施主缺陷产生的总正电荷量为 \(\sum_{\alpha,q>0} [q*n(\alpha,q)]\) ；所有带负电（q<0）的受主缺陷产生的总负电荷量为 \(\sum_{\alpha,q<0} [(-q)*n(\alpha,q)]\) 。电子和空穴载流子的浓度将由热激发和这些缺陷（杂质）的离化共同决定。在平衡态下，费米能级可以利用以下电中性条件确定：

\[n_0+\sum_{\alpha,q<0} [(-q)*n(\alpha,q)]=p_0+\sum_{\alpha,q>0} [q*n(\alpha,q)]\]

其中 \(n_0\) 和 \(p_0\) 是自由的电子和空穴载流子浓度，由下式决定：

\[n_0 = \int_{\varepsilon_c}^{+\infty}g(E)f(E)dE\]

\[p_0 = \int_{-\infty}^{\varepsilon_v}g(E)(1-f(E))dE\]

其中 \(g(E)\) 表示半导体能带的态密度， \(f(E)\) 是Fermi-Dirac分布函数。

半导体材料通常在高温下生长，随后快速退火至一个较低的工作温度。因此，缺陷通常在高温的生长过程中形成，在随后的快速退火过程中可以假设原子结构不再改变、新的缺陷不会形成，但是，电子的分布和缺陷的带电状态可能会在快速退火中改变，缺陷各个带电状态（价态）的浓度可能会重新分布。DDC模块的计算方法与此一致，即，先在高的生长温度下自洽求解电中性条件方程，得到费米能级和各价态缺陷的浓度；随后，在低的工作温度下再次求解电中性条件方程，但此时需改变各价态缺陷浓度的计算公式。在工作温度下电中性条件方程的求解中，把每个缺陷（所有价态）的总浓度固定，而其各个价态对应的浓度根据Fermi-Dirac分布函数重新分布。基于该流程，可以计算出工作温度下半导体样品的费米能级、载流子浓度和价态重新分布后的缺陷浓度。

DDC模块会读取TSC和DEC模块的计算结果和输出（形成能、转变能级），自动计算出在不同元素化学势、生长和工作温度条件下，所有缺陷在不同价态的浓度、半导体样品的费米能级和载流子浓度。主要包括以下步骤：

形成能数据的汇总

DDC模块将根据DEC模块计算的所有缺陷类型，自动搜寻各缺陷目录下输出的形成能和转变能级等数据，汇总并输出在文件 DefectParams.txt 中。

费米能级自洽计算

自洽求解电中性条件方程，分别计算半导体在生长温度和工作温度下的费米能级，输出在 4ddc.out 和 Fermi.dat 中。

缺陷和载流子浓度计算

根据费米能级，即可计算相应的载流子浓度和各个价态的缺陷浓度，并输出数据 Carrier.dat 、 Defect_charge.dat 以及png格式的图片文件 density.png 。

上述产生文件和计算过程的所有细节信息，都将输入到 4ddc.out 文件。相关的状态、结果及报错信息，可以根据此文件查询。

2.5. CDC模块

CDC模块支持以下性质的计算：（1）缺陷诱导的载流子辐射俘获系数（速率）；（2）光致发光谱的形状；（3）载流子非辐射俘获系数（待更新）。

（1）辐射俘获系数

假设某缺陷 \(A\) 具有q=0和q=+1价态，其价态转变能级 \((0/+)\) 位于带隙内，则处于 \(+1\) 价的缺陷 \(A^+\) 可以俘获来自于导带底的电子，转变成 \(A^0\) 。若此过程是以辐射跃迁（释放光子）的形式，那么其俘获系数可以表示为：

\[C_n = fη_{spin}V_{supercell}\frac{n_{r}e^{2}}{3m^{2}ε_{0}πc^{3}ħ^{2}}|\langle\psi_i|p|\psi_f\rangle|^{2}E_{opt}\]

其中 \(f\) 为Sommerfeld因子，用来表示俘获前的带电缺陷与俘获载流子的库伦相互作用，对于 \(A^+\) ，其俘获电子为库伦吸引作用，因此 \(f\) 的数量级约在5-10之间；相反地，如果对于 \(A^0\) 俘获空穴变成 \(A^+\) ，则 \(f=1\) ，因为电中性的缺陷中心不吸引也不排斥正负电荷。 \(η_{spin}\) 为自旋选择规则， \(V_{supercell}\) 为超胞的体积， \(n_{r}\) 表示材料的折射率， \(m\) 是自由电子的质量， \(\langle\psi_i|p|\psi_f\rangle\) 表示动量矩阵元，需要修改vasp源程序并重新编译即可输出。 \(E_{opt}\) 是缺陷的光学转变能级（optical transition level），可由缺陷的热力学转变能级（thermodynamic transition level）减晶格弛豫能得到。

CDC模块可以基于DEC模块的计算目录和输出（例如缺陷结构、缺陷转变能级等），自动且批量地调用VASP做相关的第一性原理计算，得到辐射俘获系数，单位为 \(cm^{3}s^{-1}\) 。基于辐射俘获系数 \(C_n\) ，需要将该系数与真实的缺陷浓度 \(N_D\) （可参照DDC模块的输出）相乘，得到俘获速率 \(r\) ，再取倒数得到辐射跃迁的寿命：

\[τ = \frac{1}{r} = \frac{1}{C_{n}N_{D}}\]

（2）光致发光谱的形状

稳态荧光光谱（steady-state photoluminescence spectroscopy）是表征缺陷的重要实验手段之一。以前的理论研究往往只将计算的缺陷能级位置与PL峰值的位置相比来推测可能的缺陷构型，而DASP的CDC模块可以模拟PL光谱的形状，从而提供PL谱的峰值位置、半峰宽、零声子线、Huang-Rhys因子等物理量与实验比较。PL光谱的模拟主要基于“谱函数”的计算，即把光强写成辐射光子能量 \(ħω\) 的函数：

\[I(ħω) = Nω^{3}\sum_{m}p_{m}\sum_{n}|\langleχ_{im}|χ_{fn}\rangle|^{2}δ(E_{ZPL}+E_{im}-E_{fn}-ħω)\]

其中N表示归一化因子， \(χ_{im}\) 和 \(χ_{fn}\) 分别表示初态和末态声子的波函数， \(E_{im}\) 和 \(E_{fn}\) 分别表示初态和末态声子分别处于第 \(m\) 个和第 \(n\) 个振动态的本征值， \(E_{ZPL}\) 表示该跃迁过程的零声子线能量。为了得到准确的声子波函数和各个振动态的本征值，CDC模块采用了一维位形图（one-dimensional configuration coordinate diagram）的方法绘制势能面曲线，并求解该势能面下的定态薛定谔方程，从而得到波函数和本征值的数值解。

CDC模块可以基于DEC模块的计算目录和输出（例如缺陷结构、缺陷转变能级等），自动且批量地调用VASP做相关的第一性原理计算，计算位形图、波函数、本征值，并数值地求解以上的重叠积分，最终输出光强随辐射光子能量 \(ħω\) 的变化，即PL谱。

输出文件格式说明

relax.json

relax.json 为 task = relax 时的输出文件，当 task类型为其他时，该文件不输出。

（1） relax.json 中包含 1*N 个结构体；

（2）每个结构体保存着结构弛豫中每个离子步优化之后的结构信息，具体包含3部分信息:

Atoms 中保存着每个原子的信息，每个Atoms中包含5部分信息：

Element 为原子的元素名;

Fix 为原子是否固定;

Mag 为原子的初始磁矩;

Position 为原子的对应的坐标；

Pot 为原子的赝势信息；

CoordinateType 为坐标类型： Direct 为分数坐标, Cartesian 为笛卡尔坐标；

FixLattice 为晶胞向量是否固定；

Lattice 为晶格常数；

system.json

除 task = frequency 、task = elastic 、task = epsilon外，其余task计算输出system.json文件。

（1） system.json 中包含7个结构体;

（2） AtomInfo 中包含5部分信息:

Atoms 中保存着每个原子的信息；每个Atoms中包含2部分信息：

Element 为对应原子的元素名;

Position 为对应原子的对应的坐标；

CoordinateType 为坐标类型： Direct 为分数坐标, Cartesian 为笛卡尔坐标;

FixLattice 为是否固定晶胞的开关，在structure.as文件的第三行添加Fix标签控制；

Grid 为格点数目，绘制3维格点数据的时候需要使用

Lattice 为晶格常数；

（3） Eigenvalue 中包含3部分信息:

NumberOfBand 为总能带数；

Spin1 和 Spin2 保存着能带相关的数据，其数据格式相同； Spin1 中包含3部分信息：

BandEnergies 中保存着每条能带每个 K点 对应的能量值；

Kpoints 中保存着每个 K点 的分数坐标；

Occupation 中保存着每条能带每个 K点 对应的电子占据值；

备注

注意： 当只有Spin1的时候，Spin1为总的信息 当Spin1和Spin2同时存在的时候，Spin1为自旋向上的信息，Spin2为自旋向下的信息。

（4） Electron 中包含1部分信息:

Electron 给出体系的总价电子数；

（5） Energy 中包含3部分信息：

EFermi 为自洽或最后一步结构弛豫的费米能级的值；

TotalEnergy 为自洽或最后一步结构弛豫的总能的值；

TotalEnergy0 为自洽或最后一步结构弛豫的 sigma 趋于 0 时近似总能的值；

（6） Force 中包含1部分信息：

ForceOnAtoms 中保存着每个原子对应 XYZ 三个方向上的力的值；

（7） MagInfo 中包含着磁矩的信息;

TotalMagOnAtomsX 给出各原子X方向上的总磁矩，Y，Z同理，该信息输出需在input.in文件中打开io.magProject开关；

TotalMagOnOrbitalX 给出X方向磁矩分布在各轨道的分量，Y, Z同理，该信息输出需在input.in文件中打开io.magProject开关；

（8） Stress 中包含2部分信息：

Direction 中保存了 Total stress 的分量符号；

Total 中保存了在每个Direction分量上 stress 的值；

（9） 当体系考虑溶剂化效应，即设置sys.sol = true时， system.json 结构中会分别写入 ElectronPotential_SHE 和 FermiShift 数据，如下图所示：

其中：

ElectronPotential_SHE 给出相对于标准电极的电极电势；

FermiShift 给出引入隐式溶剂模型后费米能级的shift数值；

dos.json

dos.json 为 task = dos 时的输出文件，当 task类型为其他时，该文件不输出。

（1） dos.json 中包含2个结构体;

（2） AtomInfo 同 system.json 中的AtomInfo数据；

（3） DosInfo 中包含11部分信息：

DosEnergy 为所计算态密度的能量点的数据；

EFermi 为费米能级值；

EnergyMax 为所计算态密度的最大能量值；

EnergyMin 为所计算态密度的最小能量值；

SpinType 为计算时所设置的磁性类型；

Magnetization 为投影到每个原子上的磁矩分量；

NumberOfDos 为所计算的态密度的所有能量点的数目；

Orbit 为投影轨道信息；

IsProject 为态密度计算时是否打开了投影功能；

Spin1 和 Spin2 保存着态密度相关的数据，其数据格式相同； Spin1 中包含2部分信息：

Dos 为总的态密度的数据；

ProjectDos 包含原子数×轨道数目大小的结构体，每个结构体中包含着3部分信息：

AtomIndex 为当前 Contribution 对应的元素序号，该序号与AtomInfo中的 Atoms 的序号相同;

Contribution 为 AtomIndex 对应原子和 OrbitIndex 对应轨道在每个能量点下的态密度贡献值；

OrbitIndex 为当前 Contribution 对应的轨道序号，该序号与DosInfo中的Orbit的序号相同；

备注

注意：当只有Spin1的时候，Spin1为总的信息 当Spin1和Spin2同时存在的时候，Spin1为自旋向上的信息，Spin2为自旋向下的信息。

band.json

band.json 为 task = band 时的输出文件，当 task类型为其他时，该文件不输出。

（1） 此例为能带反折叠计算的 band.json 文件，包含3个结构体；

（2） AtomInfo 同 system.json 中的 AtomInfo 数据；

（3） BandInfo 中包含12部分信息：

BandGap 为带隙值；

CBM 为导带位置；

VBM 为价带位置；

CoordinatesOfKPoints 为能带计算时K点的分数坐标；

EFermi 为费米能级值；

SpinType 为计算时所设置的磁性类型；

SymmetryKPoints 为能带计算时高对称K点的字母表示；

SymmetryKPointsIndex 为能带计算时高对称K点的起始序号；

IsProject 为能带计算时是否打开了投影功能；

NumberOfband 为所计算的能带的所有能带的数目；

Orbit 为投影轨道信息；

Spin1 和 Spin2 保存着能带相关的数据，其数据格式相同, Spin1 中包含2部分信息：

Band 为总的能带的数据；

ProjectBand 包含原子数×轨道数目大小的结构体，每个结构体中包含着3部分信息：

AtomIndex 为当前 Contribution 对应的元素序号，该序号与AtomInfo中的 Atoms 的序号相同;

Contribution 为 AtomIndex 对应原子和 OrbitIndex 对应轨道在每个能量点下的能带贡献值；

OrbitIndex 为当前 Contribution 对应的轨道序号，该序号与BandInfo中的 Orbit 的序号相同；

（4） UnfoldingBandInfo 中包含8部分信息，除 Spin 部分结构与 BandInfo 不同，其余数据结构均一致：

Spin1 保存着反折叠能带的相关的数据， Spin1 中包含2部分信息：

UnfoldingBand 为总的能带数据；

Weight 为能带的权重值；

备注

注意：当只有Spin1的时候，Spin1为总的信息 当Spin1和Spin2同时存在的时候，Spin1为自旋向上的信息，Spin2为自旋向下的信息。

rho.json

rho.json 为 task = scf 以及 task =relax时的输出文件，当 task类型为其他时，该文件不输出。

（1） rho.json 中包含2个结构体；

（2） AtomInfo 同 system.json 中的 AtomInfo 数据；

（3） Rho 中包含信息：

TotalCharge 和 SpinCharge ； TotalCharge 和 SpinCharge 数据格式相同，都表示电荷密度其数据大小为AtomInfo中3个Grid的乘积；

备注

注意：在当只有TotalCharge的时候，TotalCharge为总的电荷密度；当TotalCharge和SpinCharge同时存在的时候，TotalCharge为总的电荷密度，SpinCharge为自旋电荷密度；

elf.json

elf.json 可为 task = elf 和 task = scf 且 io.elf设置为 true 以及 task = relax 且 io.elf设置为 true这 3种 task下的输出文件，当task类型为其他时，该文件不输出。

（1） elf.json 中包含2个结构体；

（2） AtomInfo 同 system.json 中的AtomInfo数据；

（3） elf 中包含信息：

TotalELF 和 SpinELF ； TotalELF 和 SpinELF 数据格式相同，都表示电子局域密度的数据，其数据大小为AtomInfo中3个Grid的乘积；

备注

注意：在当只有TotalELF的时候，TotalELF为总的局域电荷密度；当TotalELF和SpinELF同时存在的时候，TotalELF为总的局域电荷密度，SpinELF为自旋局域电荷密度；

potential.json

potential.json 可为 task = potential 和 task = scf 且 io.potential设置为 true 以及 task = relax 且 io.potential设置为 true这3种 task下的输出文件，当 task类型为其他时，该文件不输出。

（1） potential.json 中包含2个结构体；

（2） AtomInfo 同 system.json 中的AtomInfo数据；

（3） potential 中包含4部分信息：

TotalElectrostaticPotential 和 SpinElectrostaticPotential ； TotalElectrostaticPotential 和 SpinElectrostaticPotential 数据格式相同，都表示静电势函数的数据，其数据大小为AtomInfo中 3个Grid 的乘积；

TotalLocalPotential 和 SpinLocalPotential ； TotalLocalPotential 和 SpinLocalPotential 数据格式相同，都表示局域势函数的数据，其数据大小为AtomInfo中 3个Grid 的乘积；

备注

注意：potential.type = hartree/total/all，分别保存ElectrostaticPotential/LocalPotential/ElectrostaticPotential & LocalPotential 三种类型的势函数，对应静电势、局域势、静电势和局域势

pcharge.json

pcharge.json 为 task = pcharge 时的输出文件，当 task类型为其他时，该文件不输出。

（1） pcharge.json 中包含2个结构体；

（2） AtomInfo 同 system.json 中的 AtomInfo 数据；

（3） Pcharge 在本例中包含1部分信息，为第4条能带的电荷密度，若计算N条能带，Pcharge会写出N部分信息：

BandIndex 和 KpointIndex 分别对应计算能带的序号及计算所用K点；

TotalCharge 表示电荷密度的数据，其数据大小为AtomInfo中 3个Grid 的乘积；

备注

注意：当pcharge.sumK = true时，Pcharge只包含一部分信息，为所有计算的能带的电荷密度之和。

optical.json

optical.json 为 task = scf 且 io.optical = true 时的输出文件，当 task类型为其他时，该文件不输出。

（1） optical.json 中包含2个结构体；

（2） AtomInfo 同 system.json 中的 AtomInfo 数据；

（3） OpticalInfo 中包含9部分信息：

AbsorptionCoefficient 、 ExtinctionCoefficient 、 OpticalConductivity 、 Reflectance 、 RefractiveIndex 数据格式相同，分别对应吸收系数、消光系数、光电导率、反射率和折射率，其数据大小为 计算能量间隔点数 *6；

ImDielectricFunction 和 ReDielectricFunction 数据格式相同，分别对应介电函数的虚部和实部，其数据大小为 计算能量间隔点数 *6；

EnergyAxe 和 EnergyLoss 分别对应能量计算范围，能量损失系数。

frequency.json

frequency.json 为 task = frequency 时的输出文件，当 task类型为其他时，该文件不输出。

（1） frequency.json 中包含2个结构体；

（2） AtomInfo 同 system.json 中的 AtomInfo 数据；

（3） FrequencyInfo 中包含2部分信息：

两部分数据对应两种类型的频率，分别为 f 和 f/i ；

每种频率的信息分为两部分， eigenvalues 和 eigenvectors ，对应频率的本征值和本征向量，本征向量给出 x 、 y 、 z 、 dx、 dy 、dz 6个方向上的分量。

elastic.json

elastic.json 为 task = elastic 时的输出文件，当 task类型为其他时，该文件不输出。

（1） elastic.json 中包含2个结构体；

（2） AtomInfo 同 system.json 中的 AtomInfo 数据；

（3） ElasticInfo 中包含5部分信息：

CrystalSystem 给出体系的晶体类型；

ElasticModulus 数据大小为36，给出弹性模量的数据。

Hill 、 Reuss 和 Voigt 分别给出三种模型下计算出的体积模量和剪切模量的数据，此外 Hill 模型还给出杨氏模量和泊松比。

neb.json

neb.json 为 task = neb 时的输出文件，当 task类型为其他时，该文件不输出。

（1） neb.json 中包含7个结构体；

（2） Distance 给出每两个相邻构型（00与01、01与02...05与06）之间坐标的距离；

（3） Energy 体系总能，共有 image数量 +2 个数据

（4） Force 分为两部分，分别为最大受力和切向力，共有 image数量 个数据

（5） Iteration 给出所有插点结构在优化过程中的最大受力和总能数据，共有 image数量 个数据

（6） RelaxedStructure 给出所有构型在优化完成后的原子和晶胞信息

（7） UnrelaxStructure 给出所有构型优化前的原子和晶胞信息

（8） iniFin 表示是否对初态和末态结构进行自洽计算。

备注

注意：当iniFin = False时，Distance部分不提供00与01及05与06之间的坐标距离，Energy部分数据总数等于image数量。

phonon.json

phonon.json 为 task = phonon 时的输出文件，当 task类型为其他时，该文件不输出。

（1） 此例中phonon.method = dfpt, phonon.type = bandDos， phonon.json 中包含8个结构体；

（2） BandInfo 包含7部分信息，结构与 band.json 文件中 BandInfo 部分相似，

CoordinatesOfQPoints 为计算声子能带时Q点的分数坐标；

NumberOfBand 为计算声子能带时所有能带数目；

NumberOfQPoints 为计算声子能带时高对称Q点的字母表示；

Spin1 为计算声子能带的相关数据；

SpinType 为计算声子能带时设置的自旋类型；

SymmetryQPoints 为声子能带计算时高对称Q点的字母表示；

SymmetryQPointsIndex 为声子能带计算时高对称Q点的起始序号；

（3） DosInfo 包含6部分信息，结构与 dos.json 文件中 DosInfo 部分相似，

DosEnergy 为计算声子态密度时能量点的数据；

EnergyMax 为计算声子态密度的最大能量值；

EnergyMin 为计算声子态密度的最小能量值；

NumberOfDos 为计算声子态密度时所有能量点的数目；

Spin1 为计算声子态密度的相关数据；

SpinType 为计算声子态密度时设置的自旋类型；

（4） EpsilonInfo 包含3部分信息，给出介电常数相关数据，详细解析请见第（10）条。

（5） ForceConstant 分为2部分， ConstantIndex 给出力学常数数组的维度， ConstantValue 为力学常数的数据，数据大小为Index中各维度之乘积。

（6） PrimitiveAtomInfo 分为3部分，给出原胞原子信息。

（7） SupercellAtomInfo 分为3部分，给出超胞原子信息。

（8） UnitAtomInfo 分为3部分，给出单胞原子信息。

（9） phonon 分为20部分

dfptEpsilon 为介电常数的计算开关；

dosRange 为计算声子态密度时能量的范围；

dosResolution 为计算声子态密度的能量间隔；

dosSigma 为计算声子态密度时的展宽；

eigenVectors 为本征向量的开关；

fdDisplacement 为计算声子时原子位移的大小，该参数在fd方法时有效；

iniPhonon 是否提供声子计算的json文件；

isDisplacement 是否有位移；

method 计算声子的方法；

nac 为nac的开关；

primitiveUVW 计算声子能带时是否将超胞还原成原胞；

qpoints 为计算声子能带时Q点的大小；

qpointsCoord 为计算声子能带时Q点的坐标；

qpointsLabel 为计算声子能带时Q点的标签；

qpointsNumber 为计算声子能带时Q点的数目；

qsamping 为计算声子能带时Q点采样的方法；

structureSize 为计算声子时扩胞参数；

thermal 为热力学计算的开关；

thermalRange 为热力学计算的温度范围；

type 为声子计算的任务类型。

（10）当task=phonon时，若打开介电常数或热力学性质计算的开关， phonon.json 结构中会分别写入 EpsilonInfo 和 ThermalInfo 数据，如下图所示：

其中 EpsilonInfo 分为3部分：

BornEfectiveCharge 给出波恩有效电荷数据；

Epsilon 给出介电常数数据；

Piezoelectric 给出压电数据；

其中 ThermalInfo 分为4部分：

Entropy 给出熵的数据；

HeatCapacity 给出热容数据；

HelmholtzFreeEnergy 给出Helmholtz自由能数据；

Temperature 给出温度数据；

备注

注意：当phonon.method = fd 时, phonon.json文件会写入Displacements 和 Forceset 两部分数据。

aimd.json

aimd.json 为 task = aimd 时的输出文件，当 task类型为其他时，该文件不输出。

（1） aimd.json 中包含3个结构体；

（2） Energy 包含两部分信息，分别为分子动力学模拟每一步的自由能数据和总能数据；数据大小取决于模拟总步数；

（3） structure 给出分子动力学模拟每一步的原子位置数据；

（4） Temperature 给出分子动力学模拟每一步的温度数据。

epsilon.json

epsilon.json 为 task = epsilon 时的输出文件，当 task类型为其他时，该文件不输出。

（1） epsilon.json 中包含 2 个结构体；

（2） AtomInfo 同 system.json 中的AtomInfo数据；

（3） EpsilonInfo 包含3部分数据：

BornEffectiveCharge 为波恩有效电荷数据；

Epsilon 为介电常数数据，分为电子贡献、离子贡献和总的介电常数；

Piezoelectric 为压电张量的数据，分为电子贡献、离子贡献和总的压电张量。

bader.json

bader.json 为 task = scf且io.bader = true 时的输出文件，当 task类型为其他时，该文件不输出。

（1） bader.json 中包含 2 个结构体；

（2） AtomInfo 同 system.json 中的AtomInfo数据；

（3） BaderInfo 包含3部分数据：

AtomicVolume 为bader体积数据；

Charge 为bader电荷数据；

MinDistance 为最近原子距离。

polarization.json

polarization.json 为 task = polarization 时的输出文件，当 task类型为其他时，该文件不输出。

（1） polarization.json 中包含 5 个结构体；

（2） AtomInfo 同 system.json 中的AtomInfo数据；

（3） Electronic 为电子贡献数据；

（4） Ionic 为离子贡献数据；

（5） Quantum 为极化量子数据；

（6） Total 为总的极化数据；

快速入门

本章将介绍DS-PAW的各种功能的基本使用，具体包括： 结构弛豫计算 、 自洽计算 、 能带（投影能带）计算 、 态密度（投影态密度）计算 、 自洽中直接计算能带和态密度 、势函数计算 、 电子局域密度计算 、部分电荷密度计算 、 杂化泛函计算 、 范德瓦尔斯修正计算 、 偶极修正计算 、 DFT+U计算 、 背景电荷计算 、 光学性质计算 、 频率计算 、 弹性常数计算 、 过渡态计算 、 声子谱计算 、 自旋轨道耦合计算 、 分子动力学模拟 、外加电场计算 、铁电计算 、bader电荷计算 、能带反折叠计算 、 介电常数计算 、 压电张量计算 、固定基矢弛豫计算 、声子热力学性质计算 、solid state neb计算；在DS-PAW软件中大致的可以将参数分类几类：与物理结构相关的参数、与计算性质相关的参数、与计算精度相关的参数、与收敛相关的参数，这些参数中有很多都是有默认值的，且绝大多数参数不会影响计算结果；因此本章只设置了一些特别重要的参数，同时将对这些参数进行简单的讲解。

relax结构弛豫

在密度泛函理论（DFT）中结构弛豫指的改变初始的结构的晶胞及原子位置从而优化得到总能量的局域最小值。通过结构弛豫计算，可以减少在每个原子上的受力，从而得到较为稳定的结构（一定程度上，可以通过计算声子谱或者频率来验证结构的稳定性）。使用建模软件搭建的结构一般情况下原子受力都会比较大，且即使是其他DFT软件优化过的结构，在另外一个DFT计算软件中原子受力也不一定是最小的，因此一般情况下在计算某个结构的具体性质之前需要进行结构弛豫计算。

\(Si\) 原子结构弛豫输入文件

输入文件包含参数文件 relax.in 和结构文件 structure.as ， relax.in 如下：

# task type
task = relax
#system related
sys.structure = structure.as
sys.symmetry = false
sys.functional = LDA
sys.spin = none
#scf related
cal.methods = 2
cal.smearing = 1
cal.ksamping = G
cal.kpoints = [10, 10, 10]
cal.cutoffFactor = 1.5

#relax related
relax.max =  60
relax.freedom = atom
relax.convergence =  0.05
relax.methods = CG

io.outStep = 1
io.wave = false
io.charge = false

relax.in 文件大致可以分为4部分参数：

第一部分指定计算类型，计算类型中只有task一个参数：

task ：设置计算类型，本次计算为relax结构弛豫；

第二部分指定系统相关参数，系统相关参数以sys.开头，一般是一些与体系的结构、泛函、磁性、对称性相关的参数：

sys.structure ：指定体系的结构文件，DS-PAW支持 .as 和 .json 的结构文件格式， .as 文件可以直接使用Device Studio软件生成，也可以自己手动生成；

sys.symmetry ：设置DS-PAW计算时是否需要使用对称性；

sys.functional ：设置泛函，目前程序支持 LDA 及 PBE 泛函；

sys.spin ：设置体系的磁性，由于 Si 没有磁性，因此将sys.spin设置为 none ；

第三部分指定计算相关的参数，这类参数以cal.开头：

cal.methods： 设置自洽电子步优化方法，2表示使用 Residual minimization 方法；

cal.smearing ：设置每个波函数的部分占有数方法，1表示使用 Gaussian smearing 方法；

cal.ksamping ：自动生成布里渊区 k点 网格方法，G表示使用 Gamma centered 方法；

cal.kpoints ： 设置布里渊区 k点 网格取样大小，一般K点的大小需要根据体系晶格的大小和体系的周期性来设置，通常建议在具有周期性的方向上晶格矢量与K点的乘积不小于40，在不具有周期性的方向上将 K点 设置为1即可；

第四部分指定结构弛豫相关参数，例如结构弛豫的方法、结构弛豫的类型、结构弛豫的精度等相关参数，结构弛豫指的是优化原子位置得到总能量的局域最小值的结构，一般也称之为离子步优化；

relax.max：设置结构驰豫时，最大的离子步步数；

relax.freedom ：设置结构驰豫的自由度，atom表示只弛豫原子；all表示弛豫晶格常数和原子；volume表示只弛豫晶格；

relax.convergence ：设置结构驰豫时，原子受力的收敛判据；

relax.methods ：设置结构驰豫的方法，CG表示共轭梯度法；

structure.as 文件参考如下：

Total number of atoms
2
Lattice
0.00 2.75 2.75
2.75 0.00 2.75
2.75 2.75 0.00
Direct
Si -0.115000000 -0.125000000 -0.125000000
Si 0.125000000 0.125000000 0.125000000

structure.as 文件结构固定，必须严格对照每一行写入相应信息:

第一行为固定提示行

第二行为总的原子个数

第三行为固定提示行

第四至六行为晶胞信息

第七行为原子坐标的形式，可选值为 Direct 和 Cartesian （全拼且首字母必须为大写）

第八行开始写入原子坐标信息，每一行的开头必须标注坐标所描述的原子的名称

由于本案例为结构弛豫计算，因此手动的将第一个 Si原子 的X坐标从 -0.125 改为 -0.115 ，这样能够更好的体现结构弛豫的效果。

备注

如果想要固定原子，则在第7行加入Fix_x Fix_y Fix_z标签，然后在每个原子对应的位置加入F或T，F表示不固定，T表示固定。

Direct Fix_x Fix_y Fix_z
Si -0.115000000 -0.125000000 -0.125000000 F F F
Si 0.125000000 0.125000000 0.125000000 T T T

run程序运行

准备好输入文件之后，将 relax.in 和 structure.as 文件上传到安装了DS-PAW的环境上，这里将以linux环境为例子进行介绍；

在无图形界面的linux环境下运行软件的方式与在windows的环境下运行程序会有很大的区别，在linux下需要通过命令行的方式来运行程序；一般情况下需要先加载一下环境变量，通常会将需要用的环境变量写入文本或者 .bashrc ，通过 source 的命令来加载环境；环境加载完成之后，运行 DS-PAW relax.in ，此时使用单机版的DS-PAW进行计算；如需并行计算则需运行 DS-PAW -mpi mpirun -mpiargs "-n 2" relax.in ，-mpi 指定mpirun的名称， -mpiargs 指定mpirun后面的参数，用双引号括起来。如果你需要使用排队系统（例如PBS、slurm等）提交任务，只要配置完成相应的 .pbs 或 .slurm 脚本，之后使用 qsub xx.pbs 或 sbatch xx.slurm 提交任务即可。

analysis计算结果分析

根据上述的输入文件，计算完成之后将会得到 DS-PAW.log 、 relax.json 、 system.json 、 paw_tmp/relax.tmp 这4个文件:

DS-PAW.log ：DS-PAW计算之后得到的日志文件；

relax.json ：结构弛豫完成之后的结构文件，里面保存着每一个离子步完成之后的结构文件，可以将 relax.json 文件导入Device Studio软件中进行显示；生成的 relax.json 文件也可以直接用于之后自洽计算、能带、态密度等一系列计算中，只需在计算中将 sys.structure参数 指定当前 relax.json 文件即可；

system.json： system.json 文件中保存着最后一个离子步之后的计算结果，包含结构、磁矩、能量本征值、占据态、K点信息、原子受力、stress等相应的信息；

将 relax.json 拖入Device Studio查看结构如下所示：

除查看最终构型，DS可以以gif动画的形式展示弛豫过程中结构变化的过程，在面板依次选择 Simulator-->DS-PAW-->Analysis Plot-->relax.json-->Trajectory 即可，以下为截取其中一帧的图像：

使用文本编辑器或者在线显示 json格式 可打开 realx.json 文件，更简单的方法是查看paw_tmp文件夹下的 relax.tmp 文件，可得弛豫结束后的结构数据如下：

Total number of atoms
Lattice
           0         2.75         2.75
        2.75            0         2.75
        2.75         2.75            0
Direct
Si   0.88019174   0.87481749   0.87481752
Si   0.12980826   0.12518251   0.12518248

本次结构弛豫计算进行了3个离子步的计算，弛豫结束的构型中，手动移动的第一个Si原子在x方向上的坐标在弛豫计算之后完成校正。

备注

单机版DS-PAW运行命令为软件名+输入文件名，如果你的输入文件名为abc.in那么只要执行DS-PAW abc.in即可。

该弛豫计算的收敛判据选取为原子受力，若以能量作为收敛判据，可参考 relax.convergence = 1.0e-4进行设置。

scf自洽计算

自洽计算能够得到特定晶体的电荷密度和波函数，有了电荷密度之后才能有计算该体系的能带、态密度等电子结构性质。特别需要注意是：自洽与能带、态密度等电子结构性质计算是有先后顺序的，必须先进行自洽计算得到电荷密度才能进一步计算能带、态密度等电子结构性质。

\(Si\) 原子自洽计算之准备输入文件

输入文件包含参数文件 scf.in 和结构文件 structure.as ， scf.in 如下：

# task type
task = scf
#system related
sys.structure = structure.as
sys.symmetry = false
sys.functional = LDA
sys.spin = none
#scf related
cal.methods = 2
cal.smearing = 1
cal.ksamping = G
cal.kpoints = [10, 10, 10]
cal.cutoffFactor = 1.5
#outputs
io.charge = true
io.wave = true

scf.in 输入参数介绍：

可以看到 scf.in 的输入文件中很多参数与结构弛豫的参数名是一致的，其设置方法也是一致的，这里只着重介绍一些前面没设置过或设置有些不同的参数：

task ：本次计算为 scf 自洽计算，因此将task设置为 scf ；

cal.cutoffFactor ：表示截断能参数 cal.cutoff 的系数，在DS-PAW程序中，如果 cal.cutoff 参数缺失，程序将根据元素的截断能设置默认的平面波截断， cal.cutoffFactor 参数就是在 cal.cutoff 上设置乘以一个系数；

io.charge ：当io.charge设置为 true 时，表示计算完成之后输出电荷密度的二进制文件rho.bin和json文件rho.json，二进制rho.bin文件用于后续的后处理计算，例如能带、态密度等，rho.json文件用于显示；

io.wave ：当io.wave设置为 true 时，表示计算完成之后输出波函数的二进制文件wave.bin，用户可以在后续的后处理计算中选择是否使用wave.bin开始计算；

structure.as 文件参考如下：

Total number of atoms
2
Lattice
0.00 2.75 2.75
2.75 0.00 2.75
2.75 2.75 0.00
Direct
Si -0.125000000 -0.125000000 -0.125000000
Si 0.125000000 0.125000000 0.125000000

由于本案例为自洽计算只是为了计算得到特定体系的电子结构，因此不需要手动改变原子位置；

备注

io类参数只在结构弛豫和自洽中起作用，例如io.charge在其他计算情况下将不会生成rho.bin或rho.json文件；

在结构弛豫和自洽中，还能够保存elf、potential的数据，只需要将io.elf和io.potential设置为true即可；

如果用户想要使用自己优化的结构，只需在计算中将sys.structure参数指定绝对路径或相对路径下的relax.json，也可以将relax.json文件复制到本次计算的目录中，设置sys.structure=./relax.json即可；

带自旋体系的计算案例详解第二章的NiO案例。

计算时如需给体系添加背景电荷，可直接设置sys.electron参数，该参数指定价电子的总数。

run程序运行

准备好输入文件 scf.in 和 structure.as 后，将文件上传到服务器上运行，按照结构弛豫中介绍的方法执行 DS-PAW scf.in 。

analysis计算结果分析

根据上述的输入文件，计算完成之后将会得到 DS-PAW.log 、 system.json 、 rho.bin 、 rho.json 、 wave.bin 这5个文件。

rho.bin ：电荷密度的二进制文件，用于后续的后处理计算；

rho.json ：电荷密度的 json 格式文件，用来显示电荷密度的结果；

wave.bin ：波函数的二进制文件，用于后续计算；

使用 Device Studio 可直接对 rho.json 文件处理出图，其操作步骤为：Simulator-->DS-PAW-->Analysis Plot，选择 rho.json 即可，可根据作图要求自定义设置面板参数，处理可得一维、二维、三维电荷密度图，其中三维图如下所示：

另可使用python脚本将 rho.json 格式的转化成 VESTA 软件支持的格式，具体操作见 辅助工具使用教程 部分。

band能带计算

本节将从自洽出发介绍如何使用DS-PAW计算能带和投影能带。以Si体系为例进行自洽计算（见2.2节 ），自洽完成之后准备能带计算和投影能带计算，并对能带和投影能带作图分别进行分析。

\(Si\) 能带计算输入文件

输入文件包含参数文件 band.in 、结构文件 structure.as 和上次自洽计算得到的二进制电荷密度文件 rho.bin ， band.in 如下：

# task type
task = band
#system related
sys.structure = structure.as
sys.symmetry = false
sys.functional = LDA
sys.spin = none
#scf related
cal.iniCharge = ./rho.bin
cal.methods = 2
cal.smearing = 1
cal.ksamping = G
cal.kpoints = [10, 10, 10]
cal.cutoffFactor = 1.5
#band related
band.kpointsLabel= [G,X,W,K,G,L]
band.kpointsCoord= [0, 0, 0, 0.5, 0, 0.5, 0.5, 0.25, 0.75, 0.375, 0.375, 0.75, 0, 0, 0, 0.5, 0.5, 0.5]
band.kpointsNumber= [30, 30, 30, 30, 30]

band.in 输入参数介绍：

在能带计算中可以尽量保留 sys. 和 cal. 的参数到 band.in 中，之后设置能带计算特有的参数即可：

task ：本次计算为band能带计算，设置task为 band ；

cal.iniCharge ：表示读取电荷密度二进制文件，支持绝对路径及相对路径，这里./表示当前路径下的 rho.bin 文件；

能带计算中新增了一部分能带相关的参数，这些参数只在能带计算中起作用：

band.kpointsLabel ：表示能带计算时高对称点标签，一个 band.kpointsCoord 对应一个 band.kpointsLabel ；

band.kpointsCoord ：表示能带计算时高对此点的分数坐标，每三个数为一组；

band.kpointsNumber ：表示每相邻两个高对称点的间隔；

structure.as 文件同自洽计算。（见2.2节）

备注

若读取电荷密度文件rho.bin，cal.cutoffFactor和cal.cutoff须和之前自洽计算的设置保持一致，否则会出现格点数据不匹配的问题

band.kpointsCoord、band.kpointsLabel和band.kpointsNumber三个参数的维度需要统一

run程序运行

准备好输入文件 band.in 和 structure.as 以及 rho.bin 之后，将文件上传到服务器上运行，按照结构弛豫中介绍的方法执行 DS-PAW band.in 。

analysis计算结果分析

根据上述的输入文件，计算完成之后将会得到 DS-PAW.log 、 system.json 、band.json 这3个文件。

band.json ：能带计算完成之后的 json 数据文件；此时能带的数据也将会被保存在 band.json 中，具体的数据结构详见数据结构解析部分；

使用 Device Studio 可直接对 band.json 文件处理出图，其操作步骤为：Simulator-->DS-PAW-->Analysis Plot，选择 band.json 即可，可根据作图要求自定义设置面板参数，DS处理得到的能带图如下所示：

另可使用 python 进行数据处理，具体操作见 辅助工具使用教程 部分。

ioband自洽中直接计算能带

在2.2自洽计算的输入文件中加入io.band=true，之后将band相关参数写入 scf.in 中即可。输入文件如下：

# task type
task = scf
#system related
sys.structure = structure.as
sys.symmetry = false
sys.functional = LDA
sys.spin = none
#scf related
cal.methods = 2
cal.smearing = 1
cal.ksamping = G
cal.kpoints = [10, 10, 10]
cal.cutoffFactor = 1.5
#outputs
io.charge = true
io.wave = true
#band related
io.band=true
band.kpointsLabel= [G,X,W,K,G,L]
band.kpointsCoord= [0, 0, 0, 0.5, 0, 0.5, 0.5, 0.25, 0.75, 0.375, 0.375, 0.75, 0, 0, 0, 0.5, 0.5, 0.5]
band.kpointsNumber= [30, 30, 30, 30, 30]

此时计算出来的能带图与单独计算得到的能带图效果一致。

备注

只有在task=scf时io.band=true才能生效;

当io.band=true生效时，band相关的参数都将生效;

当io.band生效时，不再需要设置cal.iniCharge = ./rho.bin，此过程将在程序内部完成。

ioband.in文件中需给出两类k点，cal.kpoints给出自洽计算的k点，band.kpoints相关参数给出能带计算的k点，两部分k点缺一不可。

pband投影能带计算

投影能带是指在能带计算过程中将每条能带每个K点上的能量展开为每个原子及其轨道的贡献。

\(Si\) 投影能带计算输入文件

投影能带的输入文件包含参数文件 pw_band.in 结构文件 structure.as 和上次自洽计算得到的二进制电荷密度文件 rho.bin ， pw_band.in 如下：

# task type
task = band
#system related
sys.structure = structure.as
sys.symmetry = false
sys.functional = LDA
sys.spin = none
#scf related
cal.iniCharge = ./rho.bin
cal.methods = 2
cal.smearing = 1
cal.ksamping = G
cal.kpoints = [10, 10, 10]
cal.cutoffFactor = 1.5
#band related
band.kpointsLabel= [G,X,W,K,G,L]
band.kpointsCoord= [0, 0, 0, 0.5, 0, 0.5, 0.5, 0.25, 0.75, 0.375, 0.375, 0.75, 0, 0, 0, 0.5, 0.5, 0.5]
band.kpointsNumber= [30, 30, 30, 30, 30]
band.project=true

pw_band.in 输入参数介绍：

pw_band.in : 与普通能带的区别在于在计算参数中设置了 band.project 参数:

band.project ：表示在能带计算中打开能带投影的开关；

run程序运行

准备好输入文件 pw_band.in 和 structure.as 以及 rho.bin 之后，将文件上传到服务器上运行，按照结构弛豫中介绍的方法执行 DS-PAW pw_band.in 。

analysis计算结果分析

根据上述的输入文件，计算完成之后将会得到 DS-PAW.log 、 system.json 、band.json 这3个文件。

band.json ：能带计算完成之后的 json 数据文件；此时投影能带的数据也将会被保存在 band.json 中，具体的数据结构详见数据结构解析部分；

使用 Device Studio 可直接对 band.json 文件处理出图，其操作步骤为：Simulator-->DS-PAW-->Analysis Plot，选择 band.json 即可，可根据作图要求自定义设置面板参数。DS处理得到的能带图如下所示：

另可使用 python 进行数据处理，具体操作见 辅助工具使用教程 部分。

dos态密度计算

本节将从自洽出发介绍如何使用DS-PAW计算态密度计算和投影态密度。以Si体系为例进行自洽计算（见2.2节），自洽完成之后准备态密度计算和投影态密度能带计算，并对能带和投影能带作图分别进行分析。

\(Si\) 态密度计算输入文件

输入文件包含参数文件 dos.in 结构文件 structure.as 和上次自洽计算得到的二进制电荷密度文件 rho.bin ， dos.in 如下：

# task type
task = dos
#system related
sys.structure = structure.as
sys.symmetry = false
sys.functional = LDA
sys.spin = none

#scf related
cal.iniCharge = ./rho.bin
cal.methods = 2
cal.smearing = 4
cal.ksamping = G
cal.kpoints = [20, 20, 20]
cal.cutoffFactor = 1.5
cal.sigma = 0.05
#dos related

#dos related
dos.range=[-10, 10]
dos.resolution=0.05
dos.EfShift = true

dos.in 输入参数介绍：

在态密度计算中可以尽量保留 sys. 和 cal. 的参数到 dos.in 中，之后设置态密度计算特有的参数即可：

task ：本次计算为dos态密度计算，设置task为 dos ；

cal.iniCharge ：表示读取电荷密度二进制文件，支持绝对路径及相对路径，这里./表示当前路径下的 rho.bin 文件；

cal.kpoints ：为得到较为精确的态密度计算结果，需要设置更为密的 K 网格，因此需要重新设置 cal.kpoints ，一般该参数的取值为自洽时的两倍左右；

cal.sigma ：在态密度计算中为了得到比较精细的态密度，往往需要将 sigma 的值设置为尽可能的小；

态密度计算中新增了一部分态密度相关的参数，这些参数只在态密度计算中起作用：

dos.range ：态密度计算时能量的区间；

dos.resolution ：表示态密度计算能量间隔精度，态密度计算的点数即为 dos.range 的差值与 dos.resolution 的比值+1；

dos.EfShift ：当dos.EfShift为 true 时，表示将 dos.range 中设置的能量是相对于自洽费米能级的相对能量；

structure.as 文件同自洽计算。（见2.2节）

备注

需要设置cal.iniCharge参数的时候，cal.cutoffFactor和cal.cutoff参数必须和之前自洽计算的结果一致，不然读取rho.bin的时候会出现格点数据不匹配的问题。

run程序运行

准备好输入文件 dos.in 和 structure.as 以及 rho.bin 之后，将文件上传到服务器上运行，按照结构弛豫中介绍的方法执行 DS-PAW dos.in 。

analysis计算结果分析

根据上述的输入文件，计算完成之后将会得到 DS-PAW.log 、system.json 、 dos.json 这3个文件。

dos.json ：态密度计算完成之后的json数据文件；

使用 Device Studio 可直接对 dos.json 文件处理出图，其操作步骤为：Simulator-->DS-PAW-->Analysis Plot，选择 dos.json 即可，可根据作图要求自定义设置面板参数。DS处理得到的态密度图如下所示：

另可使用 python 进行数据处理，具体操作见 辅助工具使用教程 部分。

iodos自洽中直接计算态密度

在2.2自洽计算的输入文件中加入io.dos=true，之后将dos相关参数写入 scf.in 中即可。输入文件如下：

# task type
task = scf
#system related
sys.structure = structure.as
sys.symmetry = false
sys.functional = LDA
sys.spin = none
#scf related
cal.methods = 2
cal.smearing = 1
cal.ksamping = G
cal.kpoints = [10, 10, 10]
cal.cutoffFactor = 1.5
#outputs
io.charge = true
io.wave = true
#dos related
io.dos=true
dos.range=[-10, 10]
dos.resolution=0.05
dos.EfShift = true

备注

只有在task=scf时io.dos=true才能生效;

当io.dos=true生效时，dos相关的参数都将生效;

当io.dos生效时，不再需要设置cal.iniCharge = ./rho.bin，此过程将在程序内部完成。

iodos.in文件中cal.kpoints提供自洽计算和态密度计算的k点，两个过程的k点的大小需保持一致。

pdos投影态密度计算

投影态密度的计算是指在态密度计算过程中将态每个能量下的态密度展开为每个原子及其轨道的态密度贡献。

\(Si\) 投影态密度计算输入文件

投影态密度的输入文件包含参数文件 pdos.in 结构文件 structure.as 和上次自洽计算得到的二进制电荷密度文件 rho.bin ， pdos.in 如下：

# task type
task = dos
#system related
sys.structure = structure.as
sys.symmetry = false
sys.functional = LDA
sys.spin = none
#scf related
cal.iniCharge = ./rho.bin
cal.methods = 2
cal.smearing = 4
cal.ksamping = G
cal.kpoints = [20, 20, 20]
cal.cutoffFactor = 1.5
cal.sigma = 0.05
#dos related
dos.range=[-10, 10]
dos.resolution=0.05
dos.EfShift = true
dos.project = true

pdos.in 输入参数介绍：

pdos.in 与普通态密度的区别在于在计算参数中设置了 dos.project 参数：

dos.project ：表示在态密度计算中打开态密度投影的开关；

run程序运行

准备好输入文件 pdos.in 和 structure.as 以及 rho.bin 之后，将文件上传到服务器上运行，按照结构弛豫中介绍的方法执行 DS-PAW pdos.in 。

analysis计算结果分析

根据上述的输入文件，计算完成之后将会得到 DS-PAW.log 、system.json 、 dos.json 这3个文件。

dos.json ：态密度计算完成之后的 json 数据文件；此时投影态密度的数据也将会被保存在 dos.json 中，具体的数据结构详见数据结构解析部分；

使用 Device Studio 可直接对 dos.json 文件处理出图，其操作步骤为：Simulator-->DS-PAW-->Analysis Plot，选择 dos.json 即可，可根据作图要求自定义设置面板参数。DS处理得到的投影态密度图如下所示：

另可使用 python 进行数据处理，具体操作见 辅助工具使用教程 部分。

potential势函数计算

本节将从自洽出发介绍如何使用DS-PAW计算势函数。以 Si 体系为例进行自洽计算（见2.2节），自洽完成之后准备势函数输入文件，并对势函数的结果进行分析。

\(Si\) 势函数计算输入文件

输入文件包含参数文件 potential.in 结构文件 structure.as 和上次自洽计算得到的二进制电荷密度文件 rho.bin ， potential.in 如下：

# task type
task = potential
#system related
sys.structure = structure.as
sys.symmetry = false
sys.functional = LDA
sys.spin = none
#scf related
cal.iniCharge = ./rho.bin
cal.methods = 2
cal.smearing = 1
cal.ksamping = G
cal.kpoints = [10, 10, 10]
cal.cutoffFactor = 1.5
#potential related
potential.type=all

potential.in 输入参数介绍：

在势函数计算中可以尽量保留 sys. 和 cal. 的参数到 potential.in 中，之后设置势函数计算特有的参数即可：

task ：本次计算为 potential 势函数计算，设置task为 potential ；

cal.iniCharge ：表示读取电荷密度二进制文件，支持绝对路径及相对路径，这里./表示当前路径下的 rho.bin 文件；

势函数计算中新增了一个相关的参数：

potential.type ：表示保存势函数的类型，当选择 all 的时候，势函数计算完成之后会同时保存静电势及总的局域势；

structure.as 文件同自洽计算。（见2.2节）

备注

需要设置cal.iniCharge参数的时候，cal.cutoffFactor和cal.cutoff参数必须和之前自洽计算的结果一致，不然读取rho.bin的时候会出现格点数据不匹配的问题；

本案例是调用自洽的结果进行势函数计算，用户也可以在task=scf时设置io.potential=true，此时也能保存potential.json文件。

如果所计算的体系需要考虑偶极修正，此时用户需要在自洽和势函数计算文件中都加入corr.dipol = true以及corr.dipolDirection参数，corr.dipol = true表示打开偶极修正的开关，corr.dipolDirection表示设置偶极修正的方向a、b、c分别表示沿着晶格矢量的a、b、c方向。

偶极修正的具体案例见应用案例：Au-Al体系功函数计算案例。

run程序运行

准备好输入文件 potential.in 和 structure.as 以及 rho.bin 之后，将文件上传到服务器上运行，按照结构弛豫中介绍的方法执行 DS-PAW potential.in 。

analysis计算结果分析

根据上述的输入文件，计算完成之后将会得到 DS-PAW.log 、system.json 、 potential.json 这3个文件。

potential.json ：势函数计算完成之后的 json 数据文件；

使用 Device Studio 可直接对 potential.json 文件处理出图，其操作步骤为：Simulator-->DS-PAW-->Analysis Plot，选择 potential.json 即可，可根据作图要求自定义设置面板参数作一维、二维、三维的势函数曲线。DS处理得到的势函数一维图如下所示：

另可使用 python 脚本将 potential.json 格式的转化成 VESTA 软件支持的格式，具体操作见 辅助工具使用教程 部分。

elf电子局域密度计算

本节将从自洽出发介绍如何使用DS-PAW计算电子局域密度ELF。以Si体系为例进行自洽计算（见2.2节），自洽完成之后准备ELF计算，并对ELF作图进行分析。

\(Si\) 电子局域密度计算输入文件

输入文件包含参数文件 ELF.in 结构文件 structure.as 和上次自洽计算得到的二进制电荷密度文件 rho.bin ， ELF.in 如下：

# task type
task = elf
#system related
sys.structure = structure.as
sys.symmetry = false
sys.functional = LDA
sys.spin = none
#scf related
cal.iniCharge = ./rho.bin
cal.methods = 2
cal.smearing = 1
cal.ksamping = G
cal.kpoints = [10, 10, 10]
cal.cutoffFactor = 1.5

ELF.in 输入参数介绍：在ELF计算中可以尽量保留 sys. 和 cal. 的参数到 ELF.in 中： task：本次计算为ELF计算，设置task为elf；

cal.iniCharge ：表示读取电荷密度二进制文件，支持绝对路径及相对路径，这里./表示当前路径下的 rho.bin 文件；

structure.as 文件同（见2.2节）自洽计算的。

备注

需要设置cal.iniCharge参数的时候，cal.cutoffFactor和cal.cutoff参数必须和之前自洽计算的结果一致，不然读取rho.bin的时候会出现格点数据不匹配的问题；

本案例是调用自洽的结果进行ELF计算，用户也可以在task=scf时设置io.elf=true，此时也能保存elf.json文件。

run程序运行

准备好输入文件之后，将 ELF.in 和 structure.as 以及 rho.bin 文件上传到服务器上运行，按照结构弛豫中介绍的方法执行 DS-PAW ELF.in 。

analysis计算结果分析

根据上述的输入文件，计算完成之后将会得到 DS-PAW.log 、system.json 、 elf.json 这3个文件。

elf.json ：ELF计算完成之后的 json 数据文件；

使用 Device Studio 可直接对 elf.json 文件处理出图，其操作步骤为：Simulator-->DS-PAW-->Analysis Plot，选择 elf.json 即可，可根据作图要求自定义设置面板参数，得到一维、二维、三维的电子局域密度图。DS处理得到的三维电子局域密度图如下所示：

另可使用 python 脚本将 elf.json 格式的转化成 VESTA 软件支持的格式，具体操作见 辅助工具使用教程 部分。

pcharge部分电荷密度计算

本节将以石墨烯为例分析指定k点下特定能带的电荷密度，自洽完成之后准备部分电荷密度的计算，并对部分电荷密度作图进行分析。

graphene石墨烯部分电荷密度计算输入文件

输入文件包含参数文件 pcharge.in 和结构文件 structure.as ，上次自洽计算得到的二进制电荷密度文件 rho.bin 和二进制波函数文件 wave.bin , pcharge.in 如下：

# task type
task = pcharge
#system related
sys.structure = structure.as
sys.symmetry = false
sys.functional = PBE
sys.spin = collinear
#scf related
cal.methods = 2
cal.smearing = 1
cal.ksamping = G
cal.kpoints = [9, 9, 1]
cal.cutoffFactor = 1.5
#pcharge related
cal.iniCharge = ./rho.bin
cal.iniWave = ./wave.bin
pcharge.bandIndex = [4,5]
pcharge.kpointsIndex = [12]
pcharge.sumK= false

pcharge.in 输入参数介绍：

在部分电荷密度计算中可以尽量保留sys.和cal.的参数到 pcharge.in 中，之后设置部分电荷密度计算特有的参数即可：

task : 本次计算为部分电荷密度计算，设置task为pcharge；

cal.iniCharge : 表示读取电荷密度二进制文件，支持绝对路径及相对路径，这里./表示当前路径下的rho.bin文件；

cal.iniWave : 表示读取波函数二进制文件，支持绝对路径及相对路径，这里./表示当前路径下的wave.bin文件；

pcharge.bandIndex : 指定需进行电荷密度分析的能带的序号，这里[4,5]表示分析能带4和能带5的电荷密度；

pcharge.kpointsIndex : 指定计算某条能带的电荷密度时所用K点数，这里[12]表示分析两条能带的电荷密度时k点都取12；

pcharge.sumK : 表示计算部分电荷密度之后保存数据是否将所有K点，不同能带的数据相加。这里false表示不相加；

structure.as 文件参考如下：

Total number of atoms
2
Lattice
2.46120000 0.00000000 0.00000000
-1.23060000 2.13146172 0.00000000
0.00000000 0.00000000 6.70900000
Cartesian
C  0.61530000  0.35524362  3.35450000
C  0.61530000  1.77621810  3.35450000

备注

部分电荷密度分两步完成，第二步必须读取自洽计算的电荷密度文件以及二进制波函数文件wave.bin。

run程序运行

准备好输入文件 pcharge.in 、 structure.as 以及自洽计算得到的 rho.bin 、 wave.bin 文件上传到服务器上运行，按照结构弛豫中介绍的方法执行 DS-PAW pcharge.in 。

analysis计算结果分析

根据上述的输入文件，计算完成之后将会得到 DS-PAW.log 、system.json 、 pcharge.json 这3个文件。

pcharge.json ：部分电荷密度计算完成之后的json数据文件，此时两条能带的电荷密度数据被保存在 pcharge.json 中，具体的数据结构详见数据结构解析部分；

使用 Device Studio 可直接对 pcharge.json 文件处理出图，其操作步骤为：Simulator-->DS-PAW-->Analysis Plot，选择 pcharge.json 即可，可根据作图要求自定义设置面板参数。DS处理得到的k点为 12 时能带 4 的电荷密度图如下所示：

另可使用 python 进行数据处理，具体操作见 辅助工具使用教程 部分。

hse杂化泛函计算

本节将以Si体系为例，介绍DS-PAW程序通过自洽中直接计算能带的方法计算杂化泛函能带，观察使用杂化泛函计算后能带带隙的变化。

\(Si\) 杂化泛函计算输入文件

输入文件包含参数文件 ioband.in 和结构文件 structure.as ， ioband.in 如下：

# task type
task = scf
#system related
sys.structure = structure.as
sys.symmetry = true
sys.functional = PBE
sys.spin = none
#scf related
cal.methods = 1
cal.smearing = 1
cal.ksamping = G
cal.kpoints = [5, 5, 5]
cal.cutoffFactor = 1.5
#band related
io.band = true
band.kpointsCoord=[0.62500000,0.25000000,0.62500000,0.50000000,0.00000000,0.50000000,0.00000000,0.00000000,0.00000000,0.50000000,0.00000000,0.50000000,0.50000000,0.25000000,0.75000000,0.37500000,0.37500000,0.75000000,0.00000000,0.00000000,0.00000000]
band.kpointsLabel = [U,X,G,X,W,K,G]
band.kpointsNumber = [20,20,20,20,20,20]
band.project = false
#HSE related
sys.hybrid=true
sys.hybridType=HSE06
#outputs
io.charge = false
io.wave = false

ioband.in 输入参数介绍：

在杂化泛函计算中可以尽量保留sys.和cal.的参数到 ioband.in 中，之后设置杂化泛函计算特有的参数即可：

sys.hybrid :是否进行杂化泛函计算的开关，true表示引入杂化泛函计算；

sys.hybridType :指定杂化泛函的类型，此例为HSE06；

structure.as 文件同自洽计算。（见2.2节）

备注

杂化泛函计算时赝势的类型必须为PBE。

若分两步计算能带，能带计算的输入文件中需要设置cal.iniWave。

若分两步计算能带，自洽计算和能带计算的输入文件中都需要打开sys.hybrid=true。

run程序运行

准备好输入文件 ioband.in 和 structure.as 上传到服务器上运行，按照结构弛豫中介绍的方法执行 DS-PAW ioband.in 。

analysis计算结果分析

根据上述的输入文件，计算完成之后将会得到 DS-PAW.log 、system.json 、 band.json 这3个文件。处理 band.json 的方法同（见2.3节）能带计算的方法，DS处理得到的 bandplot.png 文件如下所示，能带图表明打开杂化泛函计算后价带与导带之间的带隙变大，约为 1.2394 eV，不进行杂化泛函计算得到的能带带隙约为 0.6433 eV。

修改杂化泛函Alpha系数

2.10.1章节展示的杂化泛函方法为HSE06，其对应的杂化泛函系数为默认值0.25，DS-PAW2022A版本新增 sys.hybridAlpha 和 sys.hybridOmega 参数用于控制杂化泛函相关系数，以 sys.hybridAlpha 为例，若对2.10.1的计算参数做如下修改进行分别完成两次计算： scf.in 和 band.in 中增加参数 sys.hybridAlpha = 0.20，以及 scf.in 和 band.in 中增加参数 sys.hybridAlpha = 0.30 ，得到的能带对比图如下所示，分析该图可得通过加大 sys.hybridAlpha 系数可以使能带带隙进一步增大。从 band.json 文件中可读取当 sys.hybridAlpha 分别取值 0.20 、 0.25 、 0.30 时，对应带隙值分别为 1.1146 、1.2394 、 1.3665 。

vdw范德瓦尔斯修正计算

本节将以石墨体系的结构弛豫为例，介绍在DS-PAW中如何正确的设置范德瓦尔斯修正，并将设置范德瓦尔斯修正与不设置该参数的结果进行对比分析。

graphite石墨结构弛豫输入文件

输入文件包含参数文件 relax.in 和结构文件 structure.as ， relax.in 如下：

# task type
task = relax
#system related
sys.structure = structure.as
sys.symmetry = false
sys.functional = PBE
sys.spin = none
#scf related
cal.methods = 1
cal.smearing = 1
cal.ksamping = G
cal.kpoints = [21, 21, 7]
cal.cutoff  = 450
scf.convergence = 1.0e-05
#relax related
relax.max =  60
relax.freedom = all
relax.convergence =  0.01
relax.methods = CG
#vdw related
corr.VDW = true
corr.VDWType = D3G

relax.in 输入参数介绍：

在范德瓦尔斯修正计算中可以尽量保留sys.和cal.的参数到 relax.in 中，之后设置范德瓦尔斯修正计算特有的参数即可：

corr.VDW : 表示是否引入范德瓦尔斯修正，这里true表示已打开；

corr.VDWType : 表示使用哪种范德瓦尔斯修正，D3G表示DFT-D3 of Grimme方法；

structure.as 文件参考如下：

Total number of atoms
4
Lattice
 2.46729136 0.00000000 0.00000000
 -1.23364568 2.13673699 0.00000000
 0.00000000 0.00000000 7.80307245
Cartesian
C 0.00000000 0.00000000 1.95076811
C 0.00000000 0.00000000 5.85230434
C 0.00000000 1.42449201 1.95076811
C 1.23364689 0.71224492 5.85230434

备注

设置范德瓦尔斯修正时赝势的类型必须为PBE。

run程序运行

准备好输入文件之后，将 relax.in 和 structure.as 文件上传到服务器上运行，按照结构弛豫中介绍的方法执行 DS-PAW relax.in 。

analysis计算结果分析

根据上述的输入文件，计算完成之后将会得到 DS-PAW.log 、 relax.json 和 system.json 这3个文件。（为作对比另添加一组不考虑范德瓦尔斯的计算）

将 relax.json 拖入Device Studio查看结构，或直接查看 paw_tmp 目录下的relax.tmp 文件，可得弛豫结束后晶胞常数如下表所示，通过对比可发现添加范德瓦尔斯修正进行结构弛豫所得晶胞向量 c 的值与实验报道结果[1]更接近。

Procedure

a (Å)

c (Å)

vdw-D3G this work

2.464

7.083

PBE this work

2.464

7.914

Experiment

2.462

6.707

optical光学性质计算

本节将以Si体系为例，介绍在DS-PAW中如何进行光学性质的计算，并对一系列光学性质的物理量进行作图分析。

\(Si\) 光学性质计算输入文件

输入文件包含参数文件 scf.in 和结构文件 structure.as ， scf.in 如下：

# task type
task = scf
#system related
sys.structure = structure.as
sys.symmetry = true
sys.functional = PBE
sys.spin = none
#scf related
cal.methods = 1
cal.smearing = 1
cal.ksamping = G
cal.kpoints = [4, 4, 4]
cal.cutoffFactor = 1.5
#optical related
io.optical = true

scf.in 输入参数介绍：

在光学性质计算中可以尽量保留sys.和cal.的参数到 scf.in 中，之后设置光学性质计算特有的参数即可：

io.optical : 表示是否进行光学性质的计算，当io.optical=true时，对体系进行光学性质的计算；

structure.as 文件同自洽计算。（见2.2节）

run程序运行

准备好输入文件之后，将 scf.in 和 structure.as 文件上传到服务器上运行，按照结构弛豫中介绍的方法执行 DS-PAW scf.in 。

analysis计算结果分析

根据上述的输入文件，计算完成之后将会得到 DS-PAW.log 、system.json 、 optical.json 这3个文件。

optical.json ：光学性质计算完成之后的 json 数据文件；此时吸光系数，折射率等物理数据被保存在 optical.json 中，具体的数据结构详见数据结构解析部分；

使用 Device Studio 可直接对 optical.json 文件处理出图，其操作步骤为：Simulator-->DS-PAW-->Analysis Plot，选择 optical.json 即可，可根据作图要求自定义设置面板参数。DS处理得到的吸光系数、消光系数、反射率、折射因子随能量的变化曲线分别如下所示：

另可使用 python 进行数据处理，具体操作见 辅助工具使用教程 部分。

frequency频率计算

本节将以CO分子为例，介绍在DS-PAW中如何进行频率计算。

\(CO\) 频率计算输入文件

输入文件包含参数文件 frequency.in 和结构文件 structure.as ， frequency.in 如下：

# task type
task = frequency
#system related
sys.structure = structure.as
sys.symmetry = false
sys.functional = PBE
sys.spin = none
#scf related
cal.methods = 2
cal.smearing = 1
cal.ksamping = MP
cal.kpoints = [9, 9, 1]
cal.cutoffFactor = 1.5
scf.convergence = 1.0e-6
#frequency related
frequency.dispOrder = 1
frequency.dispRange = 0.02
#outputs
io.charge = false
io.wave = false

frequency.in 输入参数介绍：

在频率计算中可以尽量保留sys.和cal.的参数到 frequency.in 中，之后设置频率计算特有的参数即可：

task : 本次计算为频率计算，设置task为frequency；

frequency.dispOrder : 表示频率计算时原子振动的方式。1对应中心差分法，即2种原子振动方式：每个笛卡尔方向上原子的位移为 ±frequency.dispRange ；2对应4种原子振动方式：每个笛卡尔方向上原子的位移为 ±frequency.dispRange 和 ±2*frequency.dispRange ；

frequency.dispRange : 表示频率计算时的原子位移大小；

structure.as 文件参考如下：

Total number of atoms
2
Lattice
 8.0 0.0 0.0
 0.0 8.0 0.0
 0.0 0.0 8.0
Cartesian  Fix_x Fix_y Fix_z
O 0 0 0       T T F
C 0 0 1.143   T T F

备注

频率计算时应提高自洽计算的收敛精度，建议设置为1.0e-6以上。

CO只在z方向上两个原子可动。

run程序运行

准备好输入文件之后，将 frequency.in 和 structure.as 文件上传到服务器上运行，按照结构弛豫中介绍的方法执行 DS-PAW frequency.in 。

analysis计算结果分析

根据上述的输入文件，计算完成之后将会得到 DS-PAW.log 、 frequency.json 、 frequency.txt 这3个文件。

frequency.json ：频率计算完成之后的json数据文件，此时频率数据被保存在该文件中，具体的数据结构详见数据结构解析部分。

frequency.txt :频率计算完成之后的 txt 文本文件，该文件写入频率相关数据，与 frequency.json 文件数据一致，便于用户快速获取信息。

从 frequency.txt 中可获取以下数据：

Frequency

THz

2PiTHz

cm-1

meV

1 f

63.843104

401.138041

2129.576594

264.033942

2 f/i

0.051123

0.321218

1.705293

0.211429

CO只在z方向上两个原子可动，因此只有两个频率，通过上表可以看到一个振动模式的频率约为 63.8 THz，还有一个在 0 附近的虚频，一般情况虚频小于2THz基本可以忽略不计。

elastic弹性常数计算

本节将以Si体系为例，介绍在DS-PAW中如何进行弹性计算。

\(Si\) 弹性常数计算输入文件

输入文件包含参数文件 elastic.in 和结构文件 structure.as ， elastic.in 如下：

# task type
task = elastic
#system related
sys.structure = structure.as
sys.symmetry = true
sys.functional = PBE
sys.spin = none
#scf related
cal.methods = 1
cal.smearing = 1
cal.ksamping = G
cal.kpoints = [5, 5, 5]
cal.cutoffFactor = 1.5
scf.convergence = 1.0e-6
#frequency related
elastic.dispOrder = 1
elastic.dispRange = 0.01
#outputs
io.charge = false
io.wave = false

elastic.in 输入参数介绍：

在弹性计算中可以尽量保留sys.和cal.的参数到 elastic.in 中，之后设置弹性计算特有的参数即可：

task : 本次计算为弹性计算，设置task为elastic；

elastic.dispOrder : 表示弹性计算时原子振动的方式, 1对应中心差分法；

elastic.dispRange : 表示弹性计算时的原子位移大小；

structure.as 文件参考如下：

Total number of atoms
8
Lattice
 5.43070000 0.00000000 0.00000000
 0.00000000 5.43070000 0.00000000
 0.00000000 0.00000000 5.43070000
Cartesian
Si 0.67883750 0.67883750 0.67883750
Si 3.39418750 3.39418750 0.67883750
Si 3.39418750 0.67883750 3.39418750
Si 0.67883750 3.39418750 3.39418750
Si 2.03651250 2.03651250 2.03651250
Si 4.75186250 4.75186250 2.03651250
Si 4.75186250 2.03651250 4.75186250
Si 2.03651250 4.75186250 4.75186250

备注

弹性计算时应提高自洽计算的收敛精度，建议设置在1.0e-6以上。

弹性计算不支持固定原子。

run程序运行

准备好输入文件之后，将 elastic.in 和 structure.as 文件上传到服务器上运行，按照结构弛豫中介绍的方法执行 DS-PAW elastic.in 。

analysis计算结果分析

根据上述的输入文件，计算完成之后将会得到 DS-PAW.log 、 elastic.json 、 elastic.txt 这3个文件。

elastic.json : 弹性计算完成之后的 json 数据文件，此时弹性模量被保存在 elastic.json 中，具体的数据结构详见数据结构解析部分；

elastic.txt : 弹性计算完成之后的 txt 文本文件，该文件写入弹性相关数据，与 elastic.json 文件数据一致，便于用户快速获取信息。

从 elastic.txt 文件可得如下弹性常数矩阵：

158.7644

62.9858

62.9858

0.0000

-0.0000

0.0000

62.9858

158.7644

62.9858

0.0000

0.0000

0.0000

62.9858

62.9858

158.7644

-0.0000

0.0000

0.0000

0.0000

0.0000

-0.0000

75.8807

-0.0000

0.0000

-0.0000

0.0000

0.0000

-0.0000

75.8807

-0.0000

0.0000

0.0000

0.0000

0.0000

-0.0000

75.8807

刚性弹性矩阵

0.0081

-0.0023

-0.0023

-0.0000

0.0000

-0.0000

-0.0023

0.0081

-0.0023

-0.0000

-0.0000

0.0000

-0.0023

-0.0023

0.0081

0.0000

-0.0000

0.0000

-0.0000

-0.0000

0.0000

0.0132

0.0000

-0.0000

0.0000

-0.0000

-0.0000

0.0000

0.0132

0.0000

-0.0000

0.0000

0.0000

-0.0000

0.0000

0.0132

柔性弹性矩阵

Properties

Vogit

Reuss

Hill

BulkModulus(GPa)

94.9120

94.9120

94.9120

ShearModulus(GPa)

64.6841

61.5016

63.0929

YoungModulus(GPa)

158.1297

151.7315

154.9452

PoissonRatio

0.2223

0.2336

0.2279

体积模量、剪切模量、杨氏模量和泊松比

Si体系为Cubic晶系，该晶系的独立矩阵元有三个：C11 ， C12 ， C44 ，分别对应表中的 158.7644、62.9858、75.8807。

neb过渡态计算

本节将以Pt原子体系为例，介绍在DS-PAW中如何进行过渡态计算（Cl-NEB），并对结果进行作图分析。

\(Pt\) 过渡态计算输入文件

输入文件包含参数文件 neb.in 和多个结构文件 structure##.as ， neb.in 文件如下：

# task type
task = neb
#system related
sys.structure = structure.as
sys.symmetry = false
sys.functional = PBE
sys.spin = none
#scf related
cal.methods = 1
cal.smearing = 1
cal.ksamping = G
cal.kpoints = [3, 3, 1]
cal.cutoffFactor = 1.5
#neb related
neb.max = 60
neb.iniFin=true
neb.springK = 5
neb.images = 5
neb.method = LBFGS
neb.convergence = 0.1
#outputs
io.charge = false
io.wave = false

neb.in 输入参数介绍：

在过渡态计算中可以尽量保留sys.和cal.的参数到 neb.in 中，之后设置过渡态计算特有的参数即可：

task ：本次计算为过渡态计算，设置task为neb；

neb.stepRange : 表示过渡态计算中结构弛豫的步长；

neb.max : 表示过渡态计算中结构弛豫的最大步数；

neb.iniFin : 表示过渡态计算中初态结构和末态结构是否进行自洽计算，true表示进行自洽计算；

neb.springK : 表示过渡态计算中弹簧系数K；

neb.images : 表示过渡态计算中的中间结构的数目；

neb.method : 表示过渡态计算中使用的算法；

neb.convergence : 表示过渡态计算中受力的收敛标准；

structure.as 需提供多个，初态结构 structure00.as 参考如下

Total number of atoms
13
Lattice
5.6058       0       0
0  5.6058       0
0       0 16.8174
Cartesian Fix_x Fix_y Fix_z
Pt  1.40145 1.40145 1.98193  T T T
Pt  4.20435 1.40145 1.98193  T T T
Pt  1.40145 4.20435 1.98193  T T T
Pt  4.20435 4.20435 1.98193  T T T
Pt        0       0 3.89338  F F F
Pt        0  2.8029 3.89869  F F F
Pt   2.8029       0 3.96355  F F F
Pt   2.8029  2.8029 3.89338  F F F
Pt  1.43659 1.36631 5.86749  F F F
Pt  4.16921 1.36631 5.86749  F F F
Pt  1.43659 4.23949 5.86749  F F F
Pt  4.16921 4.23949 5.86749  F F F
Pt        0  2.8029 7.51195  F F F

末态结构 structure06.as 参考如下

Total number of atoms
13
Lattice
 5.6058       0       0
      0  5.6058       0
      0       0 16.8174
Cartesian Fix_x Fix_y Fix_z
Pt  1.40145 1.40145 1.98193  T T T
Pt  4.20435 1.40145 1.98193  T T T
Pt  1.40145 4.20435 1.98193  T T T
Pt  4.20435 4.20435 1.98193  T T T
Pt        0       0 3.89338  F F F
Pt        0  2.8029 3.89869  F F F
Pt   2.8029       0 3.96355  F F F
Pt   2.8029  2.8029 3.89338  F F F
Pt   2.8029       0 7.51195  F F F
Pt  4.23949 1.43659 5.86749  F F F
Pt  1.36631 4.16921 5.86749  F F F
Pt  4.23949 4.16921 5.86749  F F F
Pt  1.36631 1.43659 5.86749  F F F

备注

过渡态计算时需准备多个结构文件，命名规则为structure##.as，##为结构序号，从00开始编号，00对应初态，依次递增。

中间结构的生成可参考"辅助工具使用教程-过渡态部分“。

过渡态计算时的结构文件structure##.as需存放在命名为##的文件夹中，文件夹序号与结构文件的序号需一致。文件夹外放置一个neb.in文件即可，在neb.in所在目录执行程序。

过渡态计算执行程序时调用的核数设置为images的整数倍。

neb计算时初态末态需先进行结构弛豫。

run程序运行

准备好输入文件之后，将 neb.in 文件和包含 structure##.as 文件的多个文件夹文件上传到服务器上运行，按照结构弛豫中介绍的方法执行 DS-PAW neb.in 。

analysis计算结果分析

根据上述的输入文件，计算完成之后初态和末态结构所在文件夹会生成自洽计算所得的 DS-PAW.log 、 system.json 这2个文件，中间结构 structure##.as 所在文件夹 ## （参与过渡态计算的结构，由 neb.images 参数决定）会生成结构优化所得的 relax.json 、 system.json 、 neb##.json 、 paw_tmp/neb.tmp 这4个文件。最外层目录将会生成 DS-PAW.log 、 neb.json 这2个文件，其中 neb.json 为各 neb##.json 文件的信息汇总。

neb.json ：过渡态计算完成之后的 json 数据文件；此时反应坐标及能量变化等数据被保存在 neb.json 中，具体的数据结构详见数据结构解析部分；

paw_tmp/neb.tmp ：中间构型在优化过程中的轨迹文件，默认neb计算过程中每个离子步记录一次结构信息；

使用 Device Studio 可直接对 neb.json 文件处理出图，其操作步骤为：Simulator-->DS-PAW-->Analysis Plot，选择 neb.json 即可，可根据作图要求自定义设置面板参数。DS处理得到的势垒曲线及image3在弛豫过程中的能量与受力曲线如下所示：

除此以外，DS可以以gif动画的形式展示过渡态搜寻中的轨迹变化，在面板依次选择 Simulator-->DS-PAW-->Analysis Plot-->neb.json-->Trajectory 即可，以下为截取其中一帧的图像：

另可使用 python 进行数据处理，具体操作见 辅助工具使用教程 部分。

phonon声子谱计算

本节介绍DS-PAW程序如何进行声子计算及声子能带和声子态密度计算。DS-PAW支持两种声子谱计算的方法：fd有限位移法和dfpt密度泛函微扰理论方法。本节以单个MgO体系为例，介绍如何用dfpt方法计算声子能带和态密度，并对声子能带和态密度作图进行分析。

\(MgO\) 声子谱能带计算输入文件

输入文件包含参数文件 phonon.in 和结构文件 structure.as ， phonon.in 如下：

task = phonon

sys.structure = structure.as
sys.functional = PBE
sys.spin = none

cal.methods = 1
cal.smearing = 1
sys.symmetry = true
scf.convergence = 1.0e-07
cal.ksamping = G
cal.kpoints = [3,3,3]
cal.sigma = 0.25

phonon.type = bandDos
phonon.structureSize = [2,2,2]
phonon.primitiveUVW = [0.0, 0.5, 0.5, 0.5, 0.0, 0.5, 0.5, 0.5, 0.0]
phonon.method = dfpt
phonon.qpoints = [41,41,41]
phonon.dosRange = [0,20]
phonon.qpointsLabel = [G,X,W,G,M]
phonon.qpointsCoord = [0.0, 0.0, 0.0, 0.5, 0.0, 0.0, 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.5]
phonon.qpointsNumber = 51

io.charge = false
io.wave = false

phonon.in 输入参数介绍：

在声子计算中可以尽量保留sys.和cal.的参数到 phonon.in 中，之后设置声子计算特有的参数即可：

task : 本次计算为声子计算，设置task为phonon；

phonon.type : 表示声子计算哪些性质，bandDos对应计算声子能带和态密度；

phonon.structureSize : 声子计算时超胞的大小；

phonon.primitiveUVW : 表示声子能带计算时原胞UVW的系数；

phonon.method : 表示声子计算的方式，dfpt为密度泛函微扰理论方法；

phonon.qpoints : 表示声子计算q空间网格取样为41*41*41；

phonon.dosRange : 表示声子态密度计算的能量区间为[0,20]；

phonon.qpointsLabel : 表示声子能带计算时高对称点标签；

phonon.qpointsCoord : 表示声子能带计算时高对称点坐标；

phonon.qpointsNumber : 表示声子能带相邻两个高对称点的间隔；

structure.as 文件参考如下：

Total number of atoms
8
Lattice
     4.2555564654942897    0.0000000000000000    0.0000000000000000
     0.0000000000000000    4.2555564654942888    0.0000000000000000
     0.0000000000000000    0.0000000000000000    4.2555564654942897
Direct
Mg  0.0000000000000000  0.0000000000000000  0.0000000000000000
Mg  0.0000000000000000  0.5000000000000000  0.5000000000000000
Mg  0.5000000000000000  0.0000000000000000  0.5000000000000000
Mg  0.5000000000000000  0.5000000000000000  0.0000000000000000
O   0.5000000000000000  0.5000000000000000  0.5000000000000000
O   0.5000000000000000  0.0000000000000000  0.0000000000000000
O   0.0000000000000000  0.5000000000000000  0.0000000000000000
O   0.0000000000000000  0.0000000000000000  0.5000000000000000

备注

声子计算时应提高自洽计算的收敛精度，建议设置在1.0e-7以上。

计算声子之前建议先作结构弛豫计算（relax.freedom = all），便于得到准确的声子谱图。

声子计算时若打开对称性，建议适当提高对称性判断的精度，参数sys.symmetryAccuracy可设置为1.0e-6或更小，助于得到准确的计算结果。

phonon.iniPhonon可指定路径读取声子计算（phonon.type = phonon）得到的phonon.json文件，从而直接进行能带与态密度的计算。

phonon.type控制计算声子的类型，phonon对应计算声子，band对应计算声子能带，dos对应计算声子态密度，bandDos对应同时计算声子能带和态密度。当phonon.type = band/dos/bandDos且phonon.iniPhonon未指定文件路径时，程序先自动完成phonon.type = phonon的声子计算，然后根据任务计算能带或态密度。

run程序运行

准备好输入文件之后，将 phonon.in 和 structure.as 文件上传到服务器上运行，按照结构弛豫中介绍的方法执行 DS-PAW phonon.in 。

analysis计算结果分析

根据上述的输入文件，计算完成之后将会得到 DS-PAW.log 、system.json 、 phonon.json 、 dfpt.json 和 dfpt.as 这5个文件。

dfpt.as ：声子计算时超胞的结构文件，计算声子时读取该文件信息。

dfpt.json ：声子计算时的参数文件，该文件与 phonon.in 文件信息一致，计算声子时读取该文件信息。

phonon.json ：声子计算完成之后的 json 数据文件；此时声子能带数据被保存在 phonon.json 中，具体的数据结构详见数据结构解析部分；

使用 Device Studio 可直接对 phonon.json 文件处理出图，其操作步骤为：Simulator-->DS-PAW-->Analysis Plot，选择 phonon.json 即可，可根据作图要求自定义设置面板参数，处理得到的声子能带和态密度图如下（a）、（b）所示：

(a)

(b)

nac计算结果分析

上节展示的为不考虑长程相互作用的声子能带计算，若打开 non-analytical term correction (nac) 进行声子计算，在上节所示的 phonon.in 文件中添加以下两个参数即可：

phonon.dfptEpsilon=true
phonon.nac = true

得到的声子能带图如下（c）所示：

(c)

另可使用 python 进行数据处理，具体操作见 辅助工具使用教程 部分。

fdphonon有限位移法计算声子

有限位移法（fd） 计算的输入文件如下所示，将参数 phonon.method = dfpt 修改为 phonon.method = fd 即可，需要注意的是，fd法计算得到输出文件与dfpt法不同。

task = phonon

sys.structure = structure.as
sys.functional = PBE
sys.spin = none

cal.methods = 1
cal.smearing = 1
sys.symmetry = true
scf.convergence = 1.0e-07
cal.ksamping = G
cal.kpoints = [3,3,3]
cal.sigma = 0.25

phonon.type = bandDos
phonon.structureSize = [2,2,2]
phonon.primitiveUVW = [0.0, 0.5, 0.5, 0.5, 0.0, 0.5, 0.5, 0.5, 0.0]
phonon.method = fd
phonon.qpointsLabel = [G,X,W,G,M]
phonon.qpointsCoord = [0.0, 0.0, 0.0, 0.5, 0.0, 0.0, 0.5, 0.5, 0.0, 0.0, 0.0, 0.0, 0.5, 0.5, 0.5]
phonon.qpointsNumber = 51

io.charge = false
io.wave = false

以MgO体系为例， phonon.structureSize 设置为 [2,2,2] ，fd法计算完成之后将会得到 DS-PAW.log 、 phonon.json 两个文件 和 001 、 002 文件夹。 001 文件夹下存在 input.json 和 disp-001.as 文件，002 文件夹下存在 input.json 和 disp-002.as 文件，子文件夹中的两个文件等同于写入输入参数的 in 文件和结构参数的 as 文件，生成文件夹（001 002...）的个数取决于体系的对称性。

用 Device Studio 处理fd法计算得到的 phonon.json 文件，得到能带图及态密度图同dfpt方法计算得到的图（a）与（b）一致。

备注

介电常数的计算只在phonon.method = dfpt时才能完成

phonon.nac的开关只在phonon.method = dfpt且phonon.dfptEpsilon=true时生效

soc自旋轨道耦合计算

本节介绍DS-PAW如何进行自旋轨道耦合计算。以 \(Bi_{2}Se_{3}\) 体系为例，使用两步法进行能带计算并对能带进行作图分析。

\(Bi_{2}Se_{3}\) 自旋轨道耦合计算输入文件

首先进行自洽计算：输入文件包含参数文件 soi.in 和结构文件 structure.as ， soi.in 如下：

# task type
task = scf
#system related
sys.structure = structure.as
sys.symmetry = true
sys.functional = LDA
#scf related
cal.methods = 2
cal.smearing = 1
cal.ksamping = G
cal.kpoints = [7, 7, 7]
cal.cutoffFactor = 1.5
#soi related
sys.spin= non-collinear
sys.soi = true
#outputs
io.charge = true
io.wave = false

soi.in 输入参数介绍：

在自旋轨道耦合计算中可以尽量保留sys.和cal.的参数到 soi.in 中，之后设置自旋轨道耦合计算特有的参数即可：

soi.spin : 指定计算的自旋性质，non-collinear 表示一般自旋；

sys.soi : 表示是否考虑自旋轨道耦合效应；自旋轨道耦合效应需要在sys.spin=non-collinear时才会生效；

structure.as 文件参考如下：

Total number of atoms
5
Lattice
-2.069  -3.583614  0.000000
 2.069  -3.583614  0.000000
 0.000   2.389075  9.546667
Direct
Bi 0.3990 0.3990 0.6970
Bi 0.6010 0.6010 0.3030
Se 0.0000 0.0000 0.5000
Se 0.2060 0.2060 0.1180
Se 0.7940 0.7940 0.8820

然后进行能带计算：输入文件包含参数文件 soiband.in ，内容如下

# task type
task = band
#system related
sys.structure = structure.as
sys.symmetry = true
sys.functional = LDA
#scf related
cal.methods = 2
cal.smearing = 1
cal.ksamping = G
cal.kpoints = [7, 7, 7]
cal.cutoffFactor = 1.5
#band related
cal.iniCharge = ./rho.bin
band.kpointsCoord = [0.00000000,0.00000000,0.00000000,0.00000000,0.00000000,0.50000000,0.50000000,0.50000000,0.00000000,0.00000000,0.00000000,0.00000000,0.50000000,0.00000000,0.00000000]
band.kpointsLabel = [G,Z,F,G,L]
band.kpointsNumber = [20,20,20,20]
band.project = true
#soi related
sys.spin= non-collinear
sys.soi = true

soiband.in 输入参数介绍：

在自旋轨道耦合能带计算中，保留自洽计算和自旋轨道耦合计算的参数到 soiband.in 中，之后设置能带计算的特有参数即可。

备注

初始磁矩的设置参考“应用案例-NiO体系的反铁磁计算”，在structure.as文件的第七行设置Mag标签即可。

run程序运行

准备好输入文件之后，将 soi.in 、 soiband.in 和 structure.as 文件上传到服务器上运行，按照结构弛豫中介绍的方法分别执行 DS-PAW soi.in 和 DS-PAW soiband.in 。

analysis计算结果分析

根据上述的输入文件，计算完成之后将会得到 DS-PAW.log 、 system.json 和 band.json 这3个文件。

处理 band.json 的方法同（见2.3节）能带计算的方法，DS处理得到的 bandplot.png 文件如下图（a）所示，另作不考虑自旋轨道耦合的计算，得到的能带图如下（b）所示：

(a)

(b)

从 band.json 可读取 BandGap 值，图（a）和图（b）的带隙值分别为 0.3251 和 0.0814 ，可得结论：进行自旋轨道耦合计算可加大价带与导带之间的带隙。

aimd分子动力学模拟

本节将以水分子体系为例，介绍在DS-PAW中如何进行分子动力学模拟计算。

\(H_{2}O\) 分子动力学模拟输入文件

输入文件包含参数文件 aimd.in 和结构文件 structure.as ， aimd.in 如下：

# task type
task = aimd
#system related
sys.structure = structure.as
sys.symmetry = false
sys.functional = LDA
sys.spin = none
#scf related
cal.methods = 1
cal.smearing = 2
cal.ksamping = G
cal.kpoints = [1, 1, 1]
cal.cutoffFactor = 1.5
#aimd related
aimd.ensemble = NVE
aimd.timeStep = 1
aimd.totalSteps = 1000
aimd.iniTemp = 2000
#outputs
io.charge = false
io.wave = false

aimd.in 输入参数介绍：

在分子动力学模拟计算中可以尽量保留sys.和cal.的参数到 aimd.in 中，之后设置分子动力学模拟计算特有的参数即可：

task : 本次计算为分子动力学计算，设置task为aimd；

aimd.ensemble : 表示分子动力学模拟时选用的系综；

aimd.timeStep : 表示分子动力学模拟时的时间步长；

aimd.totalSteps : 表示分子动力学模拟的总步数；

aimd.iniTemp : 表示分子动力学模拟时的初始温度；

structure.as 文件参考如下：

Total number of atoms
3
Lattice
6.35016 0 0
0 6.35016 0
0 0 6.35016
Direct
O 0.00000    0.00000    0.00000
H 0.09167   -0.11917    0.00000
H 0.09167    0.11917    0.00000

run程序运行

准备好输入文件之后，将 aimd.in 和 structure.as 文件上传到服务器上运行，按照结构弛豫中介绍的方法执行 DS-PAW aimd.in 。

analysis计算结果分析

根据上述的输入文件，计算完成之后将会得到 DS-PAW.log 、 system.json 、aimd.json 、 paw_tmp/aimd.tmp 这4个文件。

aimd.json : 分子动力学计算完成之后的 json 数据文件；此时模拟时间内原子位置、体系能量和温度等数据被保存在 aimd.json 中，具体的数据结构详见数据结构解析部分；

paw_tmp/aimd.tmp : 分子动力学计算中的轨迹文件，默认aimd计算中每20个离子步记录一次结构信息；

使用 Device Studio 可直接对 aimd.json 文件处理出图，其操作步骤为：Simulator-->DS-PAW-->Analysis Plot，选择 aimd.json 即可，可根据作图要求自定义设置面板参数。DS可以播放在模拟过程中分子的运动轨迹，截取其中一帧的结构图如下图所示：

另可使用 python 进行数据处理，将 aimd.json 转为 pdb 文件，具体操作见 辅助工具使用教程 部分。

备注

本例设置的系综为nve，设置nvt系综时可选择程序支持的两种控温器，通过 aimd.thermostat 参数设置；

如需模拟高温退火过程，设置 aimd.ensemble 为 TS，同时通过 aimd.iniTemp 和 aimd.iniTemp 设置初始和末态温度即可。

efield外加电场计算

本节将以硅烯模型为例，介绍在DS-PAW中如何进行外加电场计算，分析加电场前后带隙打开情况。

Si硅烯真空方向外加电场计算输入文件

输入文件包含参数文件 Efield.in 和结构文件 structure.as ， Efield.in 如下：

# task type
task = scf
#system related
sys.structure = structure.as
sys.symmetry = true
sys.functional = PBE
sys.spin = none

#scf related
cal.sigma = 0.1
cal.cutoff = 520
cal.ksamping = G
cal.kpoints = [9, 9, 1]

scf.convergence = 1e-5

#outputs
io.charge = false
io.wave = false
io.band = true

corr.dipol=true
corr.dipolDirection = c
corr.dipolEfield = 0.2

band.kpointsLabel = [G,M,K,G]
band.kpointsCoord = [0.00000000,0.00000000,0.00000000,0.50000000,0.00000000,0.00000000,0.33333333,0.33333333,0.00000000,0.00000000,0.00000000,0.00000000]
band.kpointsNumber = [100,100,100]

Efield.in 输入参数介绍：

该计算是在一步能带计算的基础上外加电场，除能带计算的基本参数，新增参数为下：

corr.dipolEfield : 设置外加电场的大小，注意该参数只在 corr.dipol = true 和设置 corr.dipolDirection 的情况下生效；

structure.as 文件参考如下：

Total number of atoms
2
Lattice
  3.860000   0.000000   0.000000
 -1.930000   3.342860   0.000000
  0.000000   0.000000  26.460000
Direct
Si   0.333333   0.166667   0.396825
Si   0.666758   0.833380   0.379216

run程序运行

准备好输入文件之后，将 Efield.in 和 structure.as 文件上传到服务器上运行，按照结构弛豫中介绍的方法执行 DS-PAW Efield.in 。

analysis计算结果分析

根据上述的输入文件，计算完成之后将会得到 DS-PAW.log 、system.json 、 band.json 这3个文件。

band.json ：计算完成之后的 json 数据文件；

此例中参数 corr.dipolEfield = 0.2 ，即外加电场的大小为 0.2 eV/Å， 在该电场下进行能带计算得到的能带图如图（a）所示，

(a)

若设置参数 corr.dipolEfield = 0 重复以上计算，即在无电场的情况下进行能带计算得到的能带图如图（b）所示，

(b)

对比图（a）和图（b）可得结论：通过外加电场可以打开硅烯的带隙。 从 band.json 文件可读出加电场与不加电场 BandGap 的值分别为 0.1176 和 0.0010 。

备注

外加电场的单位 eV/Å 为原子受力的单位

ferri铁电计算

本节将以 \(HfO_{2}\) 为例，介绍在DS-PAW中如何使用现代极化理论进行铁电计算，分析 \(HfO_{2}\) 的铁电极化。

\(HfO_{2}\) 铁电计算输入文件

输入文件包含参数文件 polarization.in 和结构文件 structure.as ， polarization.in 如下：

# task type
task = scf
#system related
sys.structure = structure.as
sys.symmetry = true
sys.functional = PBE
sys.spin = none

#scf related
cal.methods = 3
cal.smearing = 4
cal.sigma = 0.05
cal.cutoff = 520
cal.ksamping = MP
cal.kpoints = [4, 4, 4]

scf.convergence = 1e-5

#outputs
io.charge = false
io.wave = false
io.polarization = true

polarization.in 输入参数介绍：

该计算是在自洽计算的基础上进行铁电计算，除自洽计算的基本参数，新增参数为下：

io.polarization : 在自洽计算中打开控制铁电计算的开关，即可快速实现铁电计算；

structure.as 文件参考如下：

Total number of atoms
12
Lattice
 5.04621935 0.00000000 0.00000000
 0.00000000 5.07315250 0.00000000
 0.00000000 0.00000000 5.25768906
Cartesian
Hf 1.34815269 1.22145223 0.17639072
Hf 1.34815269 3.75802848 2.45245381
Hf 3.69806666 1.22145223 2.80523525
Hf 3.69806666 3.75802848 5.08129834
O 0.35195212 1.93667285 1.92589951
O 0.35195212 4.47324910 0.70294502
O 2.32678304 2.48829365 3.85528784
O 2.32678304 5.02486990 4.03124575
O 2.71943630 5.02486990 1.40240122
O 2.71943630 2.48829365 1.22644331
O 4.69426723 1.93667285 4.55474404
O 4.69426723 4.47324910 3.33178955

run程序运行

准备好输入文件之后，将 polarization.in 和 structure.as 文件上传到服务器上运行，按照结构弛豫中介绍的方法执行 DS-PAW polarization.in 。

analysis计算结果分析

根据上述的输入文件，计算完成之后将会得到 DS-PAW.log 、system.json 、 polarization.json 和 polarization.txt 这4个文件。

polarization.json ：铁电极化计算完成之后的 json 数据文件，电子、离子贡献的极化部分及总的极化量子数存储在该文件中，具体文件解析见输出文件格式说明部分；

polarization.txt : 铁电极化计算完成之后的 txt 文本文件，该文件写入极化数据，与 polarization.json 文件数据一致，便于用户快速获取信息。

从 polarization.txt 文件可得 \(HfO_{2}\) 的铁电极化数据如下所示：

Total(x y z) ((μC/cm^2))

-0.000001

-8.715113

0.000000

Quantum(x y z) (μC/cm^2)

60.067225

60.387821

62.584436

通过极化量子的周期性换算，可得y方向上 \(HfO_{2}\) 的极化数为 51.672 μC/cm^2 ，与文献报道结果[2] 53 μC/cm^2 一致。

bader电荷计算

本节将以NaCl晶体为例，介绍在DS-PAW中如何进行bader电荷计算，分析NaCl体系中各原子的价态分布。

\(NaCl\) 晶体Bader电荷计算输入文件

输入文件包含参数文件 bader.in 和结构文件 structure.as ， bader.in 如下：

bader.in 文件参考如下：

# task type
task = scf
#system related
sys.structure = structure.as
sys.symmetry = false
sys.functional = PBE
sys.spin = none

#scf related
cal.methods = 1
cal.smearing = 1
cal.ksamping = G
cal.kpoints = [10, 10, 10]
cal.cutoff = 500
#outputs
io.charge = true
io.wave = false
io.bader = true

bader.in 输入参数介绍：

该计算是在自洽计算的基础上进行bader电荷计算，除自洽计算的基本参数，新增参数为下：

io.bader : 在自洽计算中打开控制bader电荷计算的开关，即可快速实现bader电荷计算；

structure.as 文件参考如下：

Total number of atoms
 8
 Lattice
  5.68452692 0.00000000 0.00000000
  0.00000000 5.68452692 0.00000000
  0.00000000 0.00000000 5.68452692
 Cartesian
 Na 4.26339519 1.42113173 1.42113173
 Na 1.42113173 4.26339519 1.42113173
 Na 1.42113173 1.42113173 4.26339519
 Na 4.26339519 4.26339519 4.26339519
 Cl 1.42113173 1.42113173 1.42113173
 Cl 4.26339519 4.26339519 1.42113173
 Cl 4.26339519 1.42113173 4.26339519
 Cl 1.42113173 4.26339519 4.26339519

备注

io.bader = true 时，io.charge 必须设置为true

run程序运行

准备好输入文件之后，将 bader.in 和 structure.as 文件上传到服务器上运行，按照结构弛豫中介绍的方法执行 DS-PAW bader.in 。

analysis计算结果分析

根据上述的输入文件，计算完成之后将会得到 DS-PAW.log 、 system.json 、 bader.json 、 bader.txt 这4个文件。

bader.json ：bader电荷计算完成之后的 json 数据文件，各原子的Bader电荷等数据存储在该文件中，具体的数据结构详见 输出文件格式说明 部分；

bader.txt : bader电荷计算完成之后的 txt 文本文件，该文件写入bader电荷数据，与 bader.json 文件数据一致，便于用户快速获取信息。

bader.txt 文本内容如下所示，bader电荷分析得到的数据与utexas大学的Henkelman小组得到的数据吻合。https://theory.cm.utexas.edu/henkelman/code/bader/

Total number of valence electronics: 64

Element

X

Y

Z

Charge

AtomicVolume

MinDistance

Cl

0.25

0.25

0.25

7.83165

34.846

1.59877

Cl

0.75

0.75

0.25

7.87519

36.8613

1.59877

Cl

0.75

0.25

0.75

7.84614

35.5159

1.59877

Cl

0.25

0.75

0.75

7.86064

36.1858

1.59877

Na

0.75

0.25

0.25

8.1466

10.07

1.11292

Na

0.25

0.75

0.25

8.1466

10.07

1.11292

Na

0.25

0.25

0.75

8.1466

10.07

1.11292

Na

0.75

0.75

0.75

8.1466

10.07

1.11292

bandunfolding能带反折叠计算

本节将以 \(Cu_{3}Au\) 体系为例，介绍在DS-PAW中如何进行能带反折叠计算，分析 \(Cu_{3}Au\) 反折叠的能带图。

\(Cu_{3}Au\) 能带反折叠计算输入文件

能带反折叠计算需两步法完成能带计算，因此输入文件包含参数文件 scf.in 、 bandunfolding.in 和结构文件 structure.as ，

scf.in 如下：

task = scf

sys.structure = structure.as
sys.symmetry = true
sys.functional = PBE
sys.spin = none

cal.methods = 1
cal.smearing = 1
cal.ksamping = MP
cal.kpoints = [3, 3, 3]
cal.cutoff = 500

scf.convergence = 1.0e-05

io.charge = true
io.wave = false

bandunfolding.in 如下：

task = band
cal.iniCharge = ./rho.bin

sys.structure = structure.as
sys.symmetry = true
sys.functional = PBE
sys.spin = none

cal.methods = 1
cal.smearing = 1
cal.ksamping = MP
cal.kpoints = [3, 3, 3]
cal.cutoff = 500

scf.convergence = 1.0e-05

band.unfolding = true
band.primitiveUVW=[0.0, 0.5, 0.5, 0.5, 0.0, 0.5, 0.5, 0.5, 0.0]
band.kpointsLabel= [R,G,X]
band.kpointsCoord= [0.5, 0.5, 0.5, 0.0, 0.0, 0.0, 0.5, 0.0, 0.5]
band.kpointsNumber= [101, 101]

io.charge = false
io.wave = false

bandunfolding.in 输入参数介绍：

能带反折叠计算是在能带计算的基础上完成的，且能带计算必须通过两步法完成。除能带计算的基本参数，新增参数为下：

band.unfolding : 在能带计算中打开能带反折叠计算的开关，即可实现能反折叠计算；

band.primitiveUVW : 超胞的晶格常数乘上UVW系数等于原胞的晶格矢量，用于控制能带反折叠的参数；

structure.as 文件参考如下：

Total number of atoms
4
Lattice
        3.7530000210         0.0000000000         0.0000000000
        0.0000000000         3.7530000210         0.0000000000
        0.0000000000         0.0000000000         3.7530000210
Direct
Au     0.000000000         0.000000000         0.000000000
Cu     0.000000000         0.500000000         0.500000000
Cu     0.500000000         0.000000000         0.500000000
Cu     0.500000000         0.500000000         0.000000000

run程序运行

准备好输入文件之后，将 scf.in 、bandunfolding.in 和 structure.as 文件上传到服务器上运行，按照结构弛豫中介绍的方法执行 DS-PAW scf.in ，自洽计算完成后执行 DS-PAW bandunfolding.in 。

analysis计算结果分析

根据上述的输入文件，计算完成之后将会得到 DS-PAW.log 、system.json 、 band.json 这3个文件。

band.json ：计算完成之后的 json 数据文件，能带反折叠计算所得json文件与普通能带计算不同，会新增 UnfoldingBandInfo 部分，具体结构解析见输出文件格式说明部分。

使用 Device Studio 可直接对 band.json 文件处理出图，其操作步骤为：Simulator-->DS-PAW-->Analysis Plot，选择 band.json 即可，可根据作图要求自定义设置面板参数。

该例得到的能带图如下所示，与文献报道结果[3] 一致。

epsilon介电常数计算

本节将以Si体系为例，介绍在DS-PAW中如何进行介电常数计算。

\(Si\) 介电常数计算输入文件

输入文件包含参数文件 epsilon.in 和结构文件 structure.as ， epsilon.in 如下：

# task type
task = epsilon
#system related
sys.structure = structure.as
sys.symmetry = true
sys.functional = PBE
sys.spin = none

#scf related
cal.methods = 1
cal.smearing = 1
cal.ksamping = G
cal.kpoints = [5, 5, 5]
cal.cutoff = 500
scf.convergence = 1.0e-7

epsilon.in 输入参数介绍：

介电常数的计算可通过直接指定 task 完成，新增参数为下：

task = epsilon : 通过控制任务类型完成介电常数的计算；

备注

在 task = phonon 且 phonon.method = dfpt 时也可完成介电常数的计算，通过添加 phonon.dfptEpsilon = true 参数即可。

structure.as 文件参考如下：

Total number of atoms
8
Lattice
 5.43070000 0.00000000 0.00000000
 0.00000000 5.43070000 0.00000000
 0.00000000 0.00000000 5.43070000
Cartesian
Si 0.67883750 0.67883750 0.67883750
Si 3.39418750 3.39418750 0.67883750
Si 3.39418750 0.67883750 3.39418750
Si 0.67883750 3.39418750 3.39418750
Si 2.03651250 2.03651250 2.03651250
Si 4.75186250 4.75186250 2.03651250
Si 4.75186250 2.03651250 4.75186250
Si 2.03651250 4.75186250 4.75186250

run程序运行

准备好输入文件之后，将 epsilon.in 和 structure.as 文件上传到服务器上运行，按照结构弛豫中介绍的方法执行 DS-PAW epsilon.in 。

analysis计算结果分析

根据上述的输入文件，计算完成之后将会得到 DS-PAW.log 、 epsilon.json 、 epsilon.txt 这3个文件。

epsilon.json ：介电常数计算完成之后的 json 数据文件，介电常数、波恩有效电荷等数据会写入该文件，具体的数据结构详见 输出文件格式说明 部分；

epsilon.txt : 介电常数计算完成之后的 txt 文本文件，该文件写入介电常数相关数据，与 epsilon.json 文件数据一致，便于用户快速获取信息。

从 epsilon.txt 文件中可获取如下数据：

Total Part

13.309902

0.000000

-0.000000

-0.000000

13.309902

-0.000000

-0.000000

0.000000

13.309902

分析上表可得该体系的介电常数为 13.309902 ，与文献报道值[4] 13.31 一致。

piezo压电张量计算

本节将以AlN体系为例，介绍在DS-PAW中如何进行压电张量计算，得到材料的压电系数 \(e_{33} (0)\)。

\(AlN\) 压电张量计算输入文件

输入文件包含参数文件 piezo.in 和结构文件 structure.as ， piezo.in 如下：

task = epsilon
#system related
sys.structure = structure.as
sys.symmetry = true
sys.functional = PBE
sys.spin = none

#scf related
cal.methods = 1
cal.smearing = 1
cal.ksamping = G
cal.kpoints = [10, 10, 10]
cal.cutoffFactor = 1.5
scf.convergence = 1.0e-7

#outputs
io.charge = false
io.wave = false

piezo.in 输入参数介绍：

task : 本次计算为压电张量计算，设置task为epsilon；

scf.convergence : 介电张量计算建议提高电子收敛的精度，此处设置为1.0e-7；

structure.as 文件参考如下：

Total number of atoms
8
Lattice
 3.11606630 0.00000000 0.00000000
 0.00000000 5.39683518 0.00000000
 0.00000000 0.00000000 5.00770902
Cartesian
Al 0.00000000 3.59735137 0.00946380
Al 0.00000000 1.79945276 2.51320124
Al 1.55803315 0.89899597 0.00945662
Al 1.55803315 4.49786165 2.51308138
N 0.00000000 3.59851112 1.91845914
N 0.00000000 1.79831356 4.42266820
N 1.55803315 0.90013952 1.91851680
N 1.55803315 4.49672497 4.42258192

run程序运行

准备好输入文件之后，将 piezo.in 和 structure.as 文件上传到服务器上运行，按照结构弛豫中介绍的方法执行 DS-PAW piezo.in 。

analysis计算结果分析

根据上述的输入文件，计算完成之后将会得到 DS-PAW.log 、 epsilon.json 、 epsilon.txt 这3个文件。

epsilon.json ：介电常量计算完成之后的 json 数据文件；介电常数、压电张量矩阵、波恩有效电荷的数据被保存在 epsilon.json 中，具体的数据结构详见数据结构解析部分；

epsilon.txt : 压电计算完成之后的 txt 文本文件，该文件写入压电相关数据，与 epsilon.json 文件数据一致，便于用户快速获取信息。

从 epsilon.txt 文件中可获取如下数据：

Piezoelectric Tensor (C/m^2)( Row: x y z Column: XX YY ZZ XY YZ ZX)

Electronic Part

0.000000

0.000000

0.000000

0.000006

0.000000

0.336610

-0.000001

0.000007

0.000003

0.000000

0.336662

0.000000

0.266339

0.265888

-0.419569

0.000000

-0.000014

0.000000

Ionic Part:

-0.000004

0.000002

0.000002

0.000032

-0.000000

-0.681702

-0.000163

-0.000239

0.000314

-0.000000

-0.699012

-0.000000

-0.911456

-0.913265

1.943887

-0.000000

-0.000633

-0.000000

Total Part:

-0.000004

0.000002

0.000002

0.000039

-0.000000

-0.345092

-0.000164

-0.000232

0.000317

-0.000000

-0.362350

-0.000000

-0.645117

-0.647377

1.524318

-0.000000

-0.000647

-0.000000

分析上表可得压电张量电子贡献部分 \(e_{33} (0)\) 的数值为 -0.419569 \(C/m^{2}\) ，总的压电张量 \(e_{33}\) 的数值为 1.524318 \(C/m^{2}\) ，与文献参考值[5] -0.47 \(C/m^{2}\) 和 1.46 \(C/m^{2}\) 接近。

fixcell固定基矢弛豫计算

本节将以 \(MoS_{2}\) 体系为例，介绍在DS-PAW中如何进行固定晶格弛豫计算。

\(MoS_{2}\) 固定基矢弛豫计算输入文件

输入文件包含参数文件 relax.in 和结构文件 structure.as ， relax.in 如下：

# task type
task = relax
#system related
sys.structure = structure.as
sys.symmetry = false
sys.functional = PBE
sys.spin = none

#scf related
cal.methods = 1
cal.smearing = 1
cal.ksamping = G
cal.cutoff = 500
cal.kpoints = [19, 19, 5]
#relax related
relax.freedom = all
relax.convergence =  0.05
relax.methods = CG

structure.as 文件参考如下：

Total number of atoms
6
Lattice  Fix_x Fix_y Fix_z
3.19031572 0.00000000 0.00000000   F T T
-1.59515786 2.76289446 0.00000000  F F T
0.00000000 0.00000000 14.87900448  T T T
Cartesian
S 0.00000000 1.84193052 12.72413785
S 1.59515943 0.92096386 5.28463561
S 0.00000000 1.84193052 9.59436887
S 1.59515943 0.92096386 2.15486663
Mo 1.59515943 0.92096386 11.15925336
Mo 0.00000000 1.84193052 3.71975112

structure.as 标签设置介绍：

固定晶胞维度进行弛豫计算需在 structure.as 文件中新增固定标签，类似于固定原子弛豫的设置（在原子坐标后添加Fix标签），固定基矢需在 structure.as 的第三行 Lattice 后添加Fix标签，本案例的标签对应固定晶胞的c边和a边的y、z方向、b边的z方向。

run程序运行

准备好输入文件之后，将 relax.in 和 structure.as 文件上传到服务器上运行，按照结构弛豫中介绍的方法执行 DS-PAW relax.in 。

analysis计算结果分析

根据上述的输入文件，计算完成之后将会得到 DS-PAW.log 、system.json 、 relax.json 这3个文件。

relax.json ：计算完成之后的 json 数据文件；

将 relax.json 拖入Device Studio查看结构，或直接查看 paw_tmp 目录下的relax.tmp 文件，可得弛豫结束后的结构数据如下：

Total number of atoms
6
Lattice
   3.19696732   0.00000000   0.00000000
  -1.59848077   2.76865753   0.00000000
   0.00000000   0.00000000  14.87900448
 Direct
 Mo   0.66666701   0.33333316   0.74999995
 Mo   0.33333340   0.66666675   0.24999997
 S   0.33333340   0.66666666   0.85535854
 S   0.66666686   0.33333303   0.35535875
 S   0.33333367   0.66666699   0.64464148
 S   0.66666708   0.33333333   0.14464130

通过对比可得弛豫前 a = b = 3.19031572 ，弛豫后变成了a = b = 3.19696732 ，而c = 14.87900448 不变。

thermal声子热力学性质计算

本节将以Si体系为例，介绍在DS-PAW中如何进行声子热力学性质计算。

\(Si\) 声子热力学性质计算输入文件

输入文件包含参数文件 phonon-thermal.in 和结构文件 structure.as ， phonon-thermal.in 如下：

# task type
task = phonon
#system related
sys.structure = structure.as
sys.symmetry = true
sys.functional = PBE
sys.spin = none

#scf related
cal.methods = 1
cal.smearing = 1
cal.ksamping = G
cal.kpoints = [5, 5, 5]
cal.cutoffFactor = 1.5
scf.convergence = 1.0e-7
#phonon related
phonon.structureSize = [2,2,2]
phonon.type =dos
phonon.qpoints = [31,31,31]
phonon.method = dfpt

phonon.thermal=true
phonon.thermalRange = [0,1000,10]

phonon-thermal.in 输入参数介绍：

phonon.thermal : 该参数为控制热力学计算的开关；

phonon.thermalRange : 该参数可指定热力学计算的温度范围及数据存储间隔；

structure.as 文件参考如下：

Total number of atoms
2
Lattice
0.00 2.75 2.75
2.75 0.00 2.75
2.75 2.75 0.00
Direct
Si -0.125000000 -0.125000000 -0.125000000
Si 0.125000000 0.125000000 0.125000000

run程序运行

准备好输入文件之后，将 phonon-thermal.in 和 structure.as 文件上传到服务器上运行，按照结构弛豫中介绍的方法执行 DS-PAW phonon-thermal.in 。

analysis计算结果分析

根据上述的输入文件，计算完成之后将会得到 DS-PAW.log 、system.json 、 phonon.json 这3个文件。

phonon.json ：计算完成之后生成的json文件，打开热力学计算的开关，生成的 phonon.json 文件中会写入 ThermalInfo 数据，具体解析见输出文件格式说明部分。

使用 Device Studio 可直接对 phonon.json 文件处理出图，其操作步骤为：Simulator-->DS-PAW-->Analysis Plot，选择 phonon.json 即可，可根据作图要求自定义设置面板参数。

分析热力学数据，可得熵、热容、亥姆霍兹自由能随温度变化的曲线如下所示，与phonony git仓库展示的结果一致：https://phonopy.github.io/phonopy/examples#thermal-properties

solid state NEB计算

本节将以HfZrO体系为例，介绍在DS-PAW中如何放开晶胞弛豫进行solid state NEB计算。

\(HfZrO\) Solid state NEB计算输入文件

输入文件包含参数文件 ssneb.in 和结构文件 structure.as ， ssneb.in 如下：

task = neb

sys.structure = structure.as
sys.functional  = LDA
sys.spin = none
sys.symmetry = false

cal.ksamping = G
cal.kpoints = [10,10,10]
cal.cutoff = 500
cal.methods = 1
cal.smearing = 1
cal.sigma = 0.05

scf.mixType = Broyden
scf.mixBeta = 0.4
scf.convergence = 1e-6
scf.max = 300

neb.springK = 5
neb.images = 6
neb.iniFin = true
neb.method = QM2
neb.convergence = 0.01
neb.max = 500
neb.freedom = all

io.wave = false
io.charge = false

ssneb.in 输入参数介绍：

neb.freedom : 该参数控制过渡态弛豫的维度，设置为all对应弛豫晶胞大小；

neb.method : 该参数指定过渡态搜寻的方法，当弛豫晶胞大小时该参数仅限于QM2和FIRE;

structure.as 需提供多个，初态结构 structure00.as 参考如下

Total number of atoms
12
Lattice
 5.00209138 0.00000009 0.00000004
 0.00000009 5.00209143 -0.00000004
 0.00000004 -0.00000004 5.07896990
Cartesian
Hf 2.50104558 2.50104575 0.00000000
Hf 0.00000000 0.00000000 0.00000000
O 3.75156841 1.25052303 1.47285183
O 3.75156857 3.75156869 1.04735062
O 1.25052293 1.25052297 3.60611823
O 1.25052286 3.75156867 4.03161932
O 1.25052287 3.75156860 1.47285187
O 1.25052275 1.25052294 1.04735054
O 3.75156850 1.25052287 4.03161945
O 3.75156850 3.75156869 3.60611821
Zr 2.50104577 0.00000000 2.53948497
Zr 0.00000000 2.50104594 2.53948491

末态结构 structure07.as 参考如下

Total number of atoms
12
Lattice
 4.98221520 -0.00002552 0.00036684
 -0.00002562 4.99587652 0.00005905
 0.00039053 0.00006126 5.18258321
Cartesian
Hf 2.30823006 2.49975412 0.04967381
Hf 0.00919001 0.00195723 0.38722458
O 4.03365086 0.66419181 2.12958714
O 4.00001549 3.18954023 0.89210846
O 0.95871628 1.24120307 4.04442128
O 0.94984693 3.74053908 4.19050825
O 1.35895285 3.73907584 1.57483409
O 1.36804279 1.24264997 1.42944278
O 3.29999107 0.69159253 4.72728663
O 3.26626721 3.16200890 3.48972595
Zr 2.31915914 0.00841995 2.97686955
Zr 4.98082249 2.50639160 2.64290889

初末态构型在 Device Studio 中显示如下：

初态T相构型

末态F相构型

备注

在 neb.freedom = all 时， neb.method 只能设置为 QM2 或 FIRE

run程序运行

准备好输入文件之后，将 ssneb.in 和 structure.as 文件上传到服务器上运行，按照结构弛豫中介绍的方法执行 DS-PAW ssneb.in 。

analysis计算结果分析

根据上述的输入文件，计算完成之后初态和末态结构所在文件夹会生成自洽计算所得的 DS-PAW.log 、 system.json 这2个文件，中间结构 structure##.as 所在文件夹 ## （参与过渡态计算的结构，由 neb.images 参数决定）会生成结构优化所得的 relax.json 、 system.json 、 neb##.json 、 paw_tmp/neb.tmp 这4个文件。最外层目录将会生成 DS-PAW.log 、 neb.json 这2个文件，其中 neb.json 为各 neb##.json 文件的信息汇总。

neb.json ：过渡态计算完成之后的 json 数据文件；此时反应坐标及能量变化等数据被保存在 neb.json 中，具体的数据结构详见数据结构解析部分；

使用 Device Studio 可直接对 neb.json 文件处理出图，其操作步骤为：Simulator-->DS-PAW-->Analysis Plot，选择 neb.json 即可，可根据作图要求自定义设置面板参数。

得到的反应势垒曲线如下所示：

PBEsol泛函计算

本节将以 \(Ta_{2}O_{5}\) 体系为例，介绍在DS-PAW中如何使用PBEsol泛函进行弛豫计算。

\(Ta_{2}O_{5}\) PBEsol泛函计算输入文件

输入文件包含参数文件 relax.in 和结构文件 structure.as ， relax.in 如下：

task = relax

sys.structure = structure.as
sys.functional  = PBESOL
sys.spin = none
sys.symmetry = true

cal.ksamping = MP
cal.kpoints = [4,4,8]
cal.cutoff = 520
cal.smearing = 1
cal.sigma = 0.01

scf.convergence = 1e-5
scf.max = 60

relax.max = 60
relax.freedom = all
relax.convergence = 0.01
relax.methods = CG

relax.in 输入参数介绍：

sys.functional : 该参数控制使用泛函的类型，此例选择的泛函为PBESOL；

结构文件 structure.as 参考如下

Total number of atoms
14
Lattice
 6.25000000 0.00000000 0.00000000
 0.00000000 7.40000000 0.00000000
 0.00000000 0.00000000 3.83000000
Cartesian
O 0.00000000 0.00000000 0.00000000
O 3.12500000 3.70000000 0.00000000
O 2.43375000 1.03970000 0.00000000
O 3.81625000 6.36030000 0.00000000
O 0.69125000 4.73970000 0.00000000
O 5.55875000 2.66030000 0.00000000
O 1.25625000 2.56114000 1.91500000
O 4.99375000 4.83886000 1.91500000
O 1.86875000 6.26114000 1.91500000
O 4.38125000 1.13886000 1.91500000
Ta 1.40250000 2.82754000 0.00000000
Ta 4.84750000 4.57246000 0.00000000
Ta 1.72250000 6.52754000 0.00000000
Ta 4.52750000 0.87246000 0.00000000

run程序运行

准备好输入文件之后，将 relax.in 和 structure.as 文件上传到服务器上运行，按照结构弛豫中介绍的方法执行 DS-PAW relax.in 。

analysis计算结果分析

根据上述的输入文件，计算完成之后将会得到 DS-PAW.log 、system.json relax.json 这3个文件及paw_tmp文件夹。

relax.json ：弛豫计算结束得到的结构文件

将 relax.json 拖入Device Studio查看结构，或直接查看 paw_tmp 目录下的relax.tmp 文件，可得弛豫结束后晶胞常数如下表所示，与文献报道结果[6] 一致。

a (Å)

b (Å)

c (Å)

PBEsol - this work

6.190

7.315

3.786

PBEsol - ref

6.197

7.333

3.793

隐式溶剂模型下溶剂能计算

本节将以 \(H_{2}O\) 体系为例，介绍在DS-PAW中如何计算隐式溶剂模型下的溶剂化能。

\(H_{2}O\) 溶剂化能计算输入文件

输入文件包含参数文件 scf.in 和结构文件 structure.as ， scf.in 如下：

# task type
task = scf
#system related
sys.structure = structure.as
sys.symmetry = true
sys.functional = PBE
sys.spin = none

#scf related
cal.methods = 1
cal.smearing = 3
cal.sigma = 0.2
cal.ksamping = G
cal.kpoints = [1, 1, 1]
cal.cutoff = 800
scf.convergence = 1.0e-6

#vaspsol
sys.sol = true
sys.solEpsilon = 80

#outputs
io.charge = false
io.wave = false
io.bondCharge = true

scf.in 输入参数介绍：

sys.sol : 该参数控制是否考虑溶剂化效应，此例考虑溶剂化效应；

sys.solEpsilon : 该参数控制溶剂介电常数的数值，此例设置为80；

结构文件 structure.as 参考如下

Total number of atoms
3
Lattice
 10.00000000 0.00000000 0.00000000
 0.00000000 10.00000000 0.00000000
 0.00000000 0.00000000 10.00000000
Cartesian
H 5.63934499 4.89541998 4.58224001
H 4.36065501 5.11499002 5.45934003
O 4.65002501 4.88500998 4.54065997

run程序运行

准备好输入文件之后，将 scf.in 和 structure.as 文件上传到服务器上运行，按照结构弛豫中介绍的方法执行 DS-PAW scf.in 。

analysis计算结果分析

根据上述的输入文件，计算完成之后将会得到 DS-PAW.log 、system.json 、rhoBond.json 这3个文件及paw_tmp文件夹。

system.json ：除 AtomInfo 和 Eigenvalue 等基本数据，ElectrodePotential_SHE 和 FermiShift 会写入该文件，分别对应相对于标准氢电极的电极电势值和引入溶剂模型后的费米能级shift数值； rhoBond.json ：使用隐性溶剂模型计算得到的溶剂电荷密度文件；

此例计算可得到考虑溶剂化能的总能 \(E_{sol}\) ,根据公式：

Solvation Energy=E(sys.sol=true)-E(sys.sol=false)

可知，要得到溶剂化能需另进行一次sys.sol = false的计算 ，计算结束可得不考虑溶剂化能的总能 \(E_{nosol}\)，代入以上公式可得水的溶剂化能为 -0.313 eV，与文献[9]报道的结果一致。

隐式溶剂模型下零点电荷电势计算

本节将以 \(Cu-slab\) 体系为例，介绍在DS-PAW中如何使用隐式溶剂模型进行零点电荷电势计算。

\(Cu-slab\) 隐式溶剂模型下零点电荷电势计算输入文件

输入文件包含参数文件 scf.in 和结构文件 structure.as ， scf.in 如下：

# task type
task = scf
#system related
sys.structure = structure.as
sys.symmetry = true
sys.functional = PBE
sys.spin = none

#scf related
cal.methods = 1
cal.smearing = 3
cal.sigma = 0.2
cal.ksamping = G
cal.kpoints = [4, 4, 1]
cal.cutoff = 600
scf.convergence = 1.0e-6

#vaspsol
sys.sol = true
sys.solEpsilon = 78.4
sys.solTAU = 0
sys.solLambdaD = 3.04

#outputs
io.charge = false
io.wave = false
io.bondCharge = true

scf.in 输入参数介绍：

sys.sol : 该参数控制是否考虑溶剂化效应；

sys.solEpsilon : 该参数控制溶剂介电常数的数值，默认值为水的介电常数78.4；

sys.solTAU : 该参数控制溶液与溶质有效界面张力常数，默认值为5.25E-4 eV/Å^2；

sys.solLambdaD : 该参数控制泊松玻尔兹曼方程中lambdaD的数值，单位为Å；

io.bondCharge : 该参数控制是否输出溶剂电荷密度文件rhoBond.json；

结构文件 structure.as 参考如下

Total number of atoms
32
Lattice
 10.26719093 0.00000000 0.00000000
 0.00000000 7.26000023 0.00000000
 0.00000000 0.00000000 22.00019836
Cartesian
Cu 0.00000000 0.00000000 1.81499430
Cu 0.00000000 3.63000011 1.81499430
Cu 5.13359547 0.00000000 1.81499430
Cu 5.13359547 3.63000011 1.81499430
Cu 2.56679773 0.00000000 1.81499430
Cu 2.56679773 3.63000011 1.81499430
Cu 7.70039320 0.00000000 1.81499430
Cu 7.70039320 3.63000011 1.81499430
Cu 1.28339887 1.81500006 3.09839798
Cu 1.28339887 5.44500017 3.09839798
Cu 6.41699433 1.81500006 3.09839798
Cu 6.41699433 5.44500017 3.09839798
Cu 3.85019660 1.81500006 3.09839798
Cu 3.85019660 5.44500017 3.09839798
Cu 8.98379207 1.81500006 3.09839798
Cu 8.98379207 5.44500017 3.09839798
Cu 2.56679773 0.00000000 4.44471163
Cu 2.56679773 3.63000011 4.44471163
Cu 7.70039320 0.00000000 4.44471163
Cu 7.70039320 3.63000011 4.44471163
Cu 0.00000000 0.00000000 4.44471163
Cu 0.00000000 3.63000011 4.44471163
Cu 5.13359547 0.00000000 4.44471163
Cu 5.13359547 3.63000011 4.44471163
Cu 3.85019660 1.81500006 5.60984919
Cu 3.85019660 5.44500017 5.60984919
Cu 8.98379207 1.81500006 5.60984919
Cu 8.98379207 5.44500017 5.60984919
Cu 1.28339887 1.81500006 5.60984919
Cu 1.28339887 5.44500017 5.60984919
Cu 6.41699433 1.81500006 5.60984919
Cu 6.41699433 5.44500017 5.60984919

run程序运行

准备好输入文件之后，将 scf.in 和 structure.as 文件上传到服务器上运行，按照结构弛豫中介绍的方法执行 DS-PAW scf.in 。

analysis计算结果分析

根据上述的输入文件，计算完成之后将会得到 DS-PAW.log 、system.json 、rhoBond.json 这3个文件及paw_tmp文件夹。

system.json ：除 AtomInfo 和 Eigenvalue 等基本数据，ElectrodePotential_SHE 和 FermiShift 会写入该文件，分别对应相对于标准氢电极的电极电势值和引入溶剂模型后的费米能级shift数值； rhoBond.json ：使用隐性溶剂模型计算得到的溶剂电荷密度文件；

从 system.json 读取 EFermi 和 FermiShift 的值分别为 -5.2671 和 1.1280 ，根据公式

Theoretical PZC=(EFermi+FermiShift)/-|e|

计算得到的零点电荷电势（Potential of Zero Charge, PZC）为 -4.1391，与文献[10]报道的结果一致。

ref参考文献

[1] Rêgo C R C, Oliveira L N, Tereshchuk P, et al. Comparative study of van der Waals corrections to the bulk properties of graphite[J]. Journal of Physics: Condensed Matter, 2015, 27(41): 415502.

[2] Clima S, Wouters D J, Adelmann C, et al. Identification of the ferroelectric switching process and dopant-dependent switching properties in orthorhombic HfO2: A first principles insight[J]. Applied Physics Letters, 2014, 104(9): 092906.

[3] Chen M, Weinert M. Layer k-projection and unfolding electronic bands at interfaces[J]. Physical Review B, 2018, 98(24): 245421.

[4] Gajdoš M, Hummer K, Kresse G, et al. Linear optical properties in the projector-augmented wave methodology[J]. Physical Review B, 2006, 73(4): 045112.

[5] Bernardini F, Fiorentini V, Vanderbilt D. Spontaneous polarization and piezoelectric constants of III-V nitrides[J]. Physical Review B, 1997, 56(16): R10024.

[6] Valencia-Balvín C, Pérez-Walton S, Osorio-Guillén J M. First principles calculations of the electronic and dielectric properties of λ-Ta2O5[J]. TecnoLógicas, 2018, 21(43): 43-52.

[7] Haynes W M, Lide D R, Bruno T J. CRC handbook of chemistry and physics[M]. CRC press, 2016.

[8] Zhang Z, Guo Y, Robertson J. Role of the third metal oxide in In–Ga–Zn–O4 amorphous oxide semiconductors: Alternatives to gallium[J]. Journal of Applied Physics, 2020, 128(21): 215704.

[9] Mathew K, Sundararaman R, Letchworth-Weaver K, et al. Implicit solvation model for density-functional study of nanocrystal surfaces and reaction pathways[J]. The Journal of chemical physics, 2014, 140(8): 084106.

[10] Mathew K, Kolluru V S C, Mula S, et al. Implicit self-consistent electrolyte model in plane-wave density-functional theory[J]. The Journal of Chemical Physics, 2019, 151(23): 234101.

续算说明

DS-PAW目前可支持 结构弛豫 、 分子动力学模拟 、 过渡态计算 、 有限位移法声子计算 、 恒电势续算 五种功能的续算，用户通过指定 ``sys.structure``指定读取的文件，读取前一次计算所得的末态结构及磁矩等相关信息。

restart a relaxation弛豫计算续算说明